{
  "contracts": {
    "@marx-dex/marx-dex-lib/contracts/libraries/Babylonian.sol:Babylonian": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ef03436824b9dc4659854e85468922df31780b99908b82df68cd7ac528f425a364736f6c63430006060033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF SUB NUMBER PUSH9 0x24B9DC4659854E8546 DUP10 0x22 0xDF BALANCE PUSH25 0xB99908B82DF68CD7AC528F425A364736F6C63430006060033 ",
          "sourceMap": "210:1371:0:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ef03436824b9dc4659854e85468922df31780b99908b82df68cd7ac528f425a364736f6c63430006060033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF SUB NUMBER PUSH9 0x24B9DC4659854E8546 DUP10 0x22 0xDF BALANCE PUSH25 0xB99908B82DF68CD7AC528F425A364736F6C63430006060033 ",
          "sourceMap": "210:1371:0:-:0;;;;;;12:1:-1;9;2:12"
        }
      },
      "interface": [],
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ef03436824b9dc4659854e85468922df31780b99908b82df68cd7ac528f425a364736f6c63430006060033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ef03436824b9dc4659854e85468922df31780b99908b82df68cd7ac528f425a364736f6c63430006060033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ef03436824b9dc4659854e85468922df31780b99908b82df68cd7ac528f425a364736f6c63430006060033",
      "srcmap": "210:1371:0:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
      "srcmap-runtime": "210:1371:0:-:0;;;;;;12:1:-1;9;2:12"
    },
    "@marx-dex/marx-dex-lib/contracts/libraries/BitMath.sol:BitMath": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122041bc78320858d233b3f618e68e4f173030ee833359c197da7544583c08ddec4464736f6c63430006060033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE 0xBC PUSH25 0x320858D233B3F618E68E4F173030EE833359C197DA7544583C ADDMOD 0xDD 0xEC DIFFICULTY PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "71:2043:1:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122041bc78320858d233b3f618e68e4f173030ee833359c197da7544583c08ddec4464736f6c63430006060033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE 0xBC PUSH25 0x320858D233B3F618E68E4F173030EE833359C197DA7544583C ADDMOD 0xDD 0xEC DIFFICULTY PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "71:2043:1:-:0;;;;;;12:1:-1;9;2:12"
        }
      },
      "interface": [],
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122041bc78320858d233b3f618e68e4f173030ee833359c197da7544583c08ddec4464736f6c63430006060033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122041bc78320858d233b3f618e68e4f173030ee833359c197da7544583c08ddec4464736f6c63430006060033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122041bc78320858d233b3f618e68e4f173030ee833359c197da7544583c08ddec4464736f6c63430006060033",
      "srcmap": "71:2043:1:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
      "srcmap-runtime": "71:2043:1:-:0;;;;;;12:1:-1;9;2:12"
    },
    "@marx-dex/marx-dex-lib/contracts/libraries/FixedPoint.sol:FixedPoint": {
      "abi": [
        {
          "inputs": [],
          "name": "Q112",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "RESOLUTION",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60c4610025600b82828239805160001a60731461001857fe5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80633bf7a83e146042578063552f888a14605a575b600080fd5b60486076565b60408051918252519081900360200190f35b60606089565b6040805160ff9092168252519081900360200190f35b6e01000000000000000000000000000081565b60708156fea2646970667358221220209a668f0c1919eaaeb2d731e3fc79aabbc6956c7ec9affbda922fe2467be84b64736f6c63430006060033",
          "opcodes": "PUSH1 0xC4 PUSH2 0x25 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x18 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3BF7A83E EQ PUSH1 0x42 JUMPI DUP1 PUSH4 0x552F888A EQ PUSH1 0x5A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x48 PUSH1 0x76 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x89 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH15 0x10000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH1 0x70 DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 SWAP11 PUSH7 0x8F0C1919EAAEB2 0xD7 BALANCE 0xE3 0xFC PUSH26 0xAABBC6956C7EC9AFFBDA922FE2467BE84B64736F6C6343000606 STOP CALLER ",
          "sourceMap": "251:5884:2:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80633bf7a83e146042578063552f888a14605a575b600080fd5b60486076565b60408051918252519081900360200190f35b60606089565b6040805160ff9092168252519081900360200190f35b6e01000000000000000000000000000081565b60708156fea2646970667358221220209a668f0c1919eaaeb2d731e3fc79aabbc6956c7ec9affbda922fe2467be84b64736f6c63430006060033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3BF7A83E EQ PUSH1 0x42 JUMPI DUP1 PUSH4 0x552F888A EQ PUSH1 0x5A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x48 PUSH1 0x76 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x89 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH15 0x10000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH1 0x70 DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 KECCAK256 SWAP11 PUSH7 0x8F0C1919EAAEB2 0xD7 BALANCE 0xE3 0xFC PUSH26 0xAABBC6956C7EC9AFFBDA922FE2467BE84B64736F6C6343000606 STOP CALLER ",
          "sourceMap": "251:5884:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;540:62:2;;;:::i;:::-;;;;;;;;;;;;;;;;496:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;540:62;571:31;540:62;:::o;496:38::-;531:3;496:38;:::o"
        }
      },
      "interface": [
        {
          "inputs": [],
          "name": "Q112",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "RESOLUTION",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "bytecode": "60c4610025600b82828239805160001a60731461001857fe5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80633bf7a83e146042578063552f888a14605a575b600080fd5b60486076565b60408051918252519081900360200190f35b60606089565b6040805160ff9092168252519081900360200190f35b6e01000000000000000000000000000081565b60708156fea2646970667358221220209a668f0c1919eaaeb2d731e3fc79aabbc6956c7ec9affbda922fe2467be84b64736f6c63430006060033",
      "bin": "60c4610025600b82828239805160001a60731461001857fe5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80633bf7a83e146042578063552f888a14605a575b600080fd5b60486076565b60408051918252519081900360200190f35b60606089565b6040805160ff9092168252519081900360200190f35b6e01000000000000000000000000000081565b60708156fea2646970667358221220209a668f0c1919eaaeb2d731e3fc79aabbc6956c7ec9affbda922fe2467be84b64736f6c63430006060033",
      "bin-runtime": "7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80633bf7a83e146042578063552f888a14605a575b600080fd5b60486076565b60408051918252519081900360200190f35b60606089565b6040805160ff9092168252519081900360200190f35b6e01000000000000000000000000000081565b60708156fea2646970667358221220209a668f0c1919eaaeb2d731e3fc79aabbc6956c7ec9affbda922fe2467be84b64736f6c63430006060033",
      "srcmap": "251:5884:2:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
      "srcmap-runtime": "251:5884:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;540:62:2;;;:::i;:::-;;;;;;;;;;;;;;;;496:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;540:62;571:31;540:62;:::o;496:38::-;531:3;496:38;:::o"
    },
    "@marx-dex/marx-dex-lib/contracts/libraries/FullMath.sol:FullMath": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220111e816671d54677bcc833e6fa380120eab7cef8d5a0d330eaa1f2ea97b8eafd64736f6c63430006060033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT 0x1E DUP2 PUSH7 0x71D54677BCC833 0xE6 STATICCALL CODESIZE ADD KECCAK256 0xEA 0xB7 0xCE 0xF8 0xD5 LOG0 0xD3 ADDRESS 0xEA LOG1 CALLCODE 0xEA SWAP8 0xB8 0xEA REVERT PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "193:1079:3:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220111e816671d54677bcc833e6fa380120eab7cef8d5a0d330eaa1f2ea97b8eafd64736f6c63430006060033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT 0x1E DUP2 PUSH7 0x71D54677BCC833 0xE6 STATICCALL CODESIZE ADD KECCAK256 0xEA 0xB7 0xCE 0xF8 0xD5 LOG0 0xD3 ADDRESS 0xEA LOG1 CALLCODE 0xEA SWAP8 0xB8 0xEA REVERT PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "193:1079:3:-:0;;;;;;12:1:-1;9;2:12"
        }
      },
      "interface": [],
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220111e816671d54677bcc833e6fa380120eab7cef8d5a0d330eaa1f2ea97b8eafd64736f6c63430006060033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220111e816671d54677bcc833e6fa380120eab7cef8d5a0d330eaa1f2ea97b8eafd64736f6c63430006060033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220111e816671d54677bcc833e6fa380120eab7cef8d5a0d330eaa1f2ea97b8eafd64736f6c63430006060033",
      "srcmap": "193:1079:3:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
      "srcmap-runtime": "193:1079:3:-:0;;;;;;12:1:-1;9;2:12"
    },
    "@marx-dex/marx-dex-lib/contracts/libraries/TransferHelper.sol:TransferHelper": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093907851f999d1865e44a9a8e402c67e18db88f46e320df93c0251f8e83ba90464736f6c63430006060033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 SWAP1 PUSH25 0x51F999D1865E44A9A8E402C67E18DB88F46E320DF93C0251F8 0xE8 EXTCODESIZE 0xA9 DIV PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "183:1621:4:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093907851f999d1865e44a9a8e402c67e18db88f46e320df93c0251f8e83ba90464736f6c63430006060033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 SWAP1 PUSH25 0x51F999D1865E44A9A8E402C67E18DB88F46E320DF93C0251F8 0xE8 EXTCODESIZE 0xA9 DIV PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "183:1621:4:-:0;;;;;;12:1:-1;9;2:12"
        }
      },
      "interface": [],
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093907851f999d1865e44a9a8e402c67e18db88f46e320df93c0251f8e83ba90464736f6c63430006060033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093907851f999d1865e44a9a8e402c67e18db88f46e320df93c0251f8e83ba90464736f6c63430006060033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122093907851f999d1865e44a9a8e402c67e18db88f46e320df93c0251f8e83ba90464736f6c63430006060033",
      "srcmap": "183:1621:4:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
      "srcmap-runtime": "183:1621:4:-:0;;;;;;12:1:-1;9;2:12"
    },
    "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Factory.sol:IMarXDEXV2Factory": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "createPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeToSetter",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "setFeeToSetter",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Pair.sol:IMarXDEXV2Pair": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "blockTimestampLast",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "blockTimestampLast",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount0Out",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/MarXDEXV2Router01.sol:MarXDEXV2Router01": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_factory",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_WETH",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "WETH",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountADesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenDesired",
              "type": "uint256"
            },
            {
              "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": "addLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountIn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountOut",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsIn",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsOut",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveB",
              "type": "uint256"
            }
          ],
          "name": "quote",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "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": "removeLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapETHForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60c060405234801561001057600080fd5b5060405161415c38038061415c8339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c61402061013c600039806101655280610b235280610b5e5280610c9b5280610f5e52806113b852806115e65280611799528061182e5280611afd5280611eb352806121e9528061223f528061227352806122f4528061250e52806126be5280612753525080610d8d5280610e8b5280611031528061106a528061121552806114aa52806116cc528061186d5280611a335280611ba65280611e385280611e615280611e91528061206e528061221d52806125f4528061279252806131fb528061323e52806137d152806138b2528061393252506140206000f3fe6080604052600436106101485760003560e01c80638803dbee116100c0578063d06ca61f11610074578063e8e3370011610059578063e8e3370014610937578063f305d719146109c4578063fb3bdb4114610a175761018e565b8063d06ca61f14610800578063ded9382a146108b75761018e565b8063ad615dec116100a5578063ad615dec1461074b578063baa2abde14610781578063c45a0155146107eb5761018e565b80638803dbee14610668578063ad5c46481461070d5761018e565b80632195995c116101175780634a25d94a116100fc5780634a25d94a146105305780637ff36ab5146105d557806385f8c2591461020c5761018e565b80632195995c1461040057806338ed17391461048b5761018e565b806302751cec14610193578063054d50d41461020c57806318cbafe5146102545780631f00ca74146103495761018e565b3661018e573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461018c57fe5b005b600080fd5b34801561019f57600080fd5b506101f3600480360360c08110156101b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610aaa565b6040805192835260208301919091528051918290030190f35b34801561021857600080fd5b506102426004803603606081101561022f57600080fd5b5080359060208101359060400135610bfd565b60408051918252519081900360200190f35b34801561026057600080fd5b506102f9600480360360a081101561027757600080fd5b81359160208101359181019060608101604082013564010000000081111561029e57600080fd5b8201836020820111156102b057600080fd5b803590602001918460208302840111640100000000831117156102d257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c12565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561033557818101518382015260200161031d565b505050509050019250505060405180910390f35b34801561035557600080fd5b506102f96004803603604081101561036c57600080fd5b8135919081019060408101602082013564010000000081111561038e57600080fd5b8201836020820111156103a057600080fd5b803590602001918460208302840111640100000000831117156103c257600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061102a945050505050565b34801561040c57600080fd5b506101f3600480360361016081101561042457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611060565b34801561049757600080fd5b506102f9600480360360a08110156104ae57600080fd5b8135916020810135918101906060810160408201356401000000008111156104d557600080fd5b8201836020820111156104e757600080fd5b8035906020019184602083028401116401000000008311171561050957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561119e565b34801561053c57600080fd5b506102f9600480360360a081101561055357600080fd5b81359160208101359181019060608101604082013564010000000081111561057a57600080fd5b82018360208201111561058c57600080fd5b803590602001918460208302840111640100000000831117156105ae57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561132f565b6102f9600480360360808110156105eb57600080fd5b8135919081019060408101602082013564010000000081111561060d57600080fd5b82018360208201111561061f57600080fd5b8035906020019184602083028401116401000000008311171561064157600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611572565b34801561067457600080fd5b506102f9600480360360a081101561068b57600080fd5b8135916020810135918101906060810160408201356401000000008111156106b257600080fd5b8201836020820111156106c457600080fd5b803590602001918460208302840111640100000000831117156106e657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119bc565b34801561071957600080fd5b50610722611afb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561075757600080fd5b506102426004803603606081101561076e57600080fd5b5080359060208101359060400135611b1f565b34801561078d57600080fd5b506101f3600480360360e08110156107a457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135611b2c565b3480156107f757600080fd5b50610722611e36565b34801561080c57600080fd5b506102f96004803603604081101561082357600080fd5b8135919081019060408101602082013564010000000081111561084557600080fd5b82018360208201111561085757600080fd5b8035906020019184602083028401116401000000008311171561087957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611e5a945050505050565b3480156108c357600080fd5b506101f360048036036101408110156108db57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611e87565b34801561094357600080fd5b506109a6600480360361010081101561095b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135611fdf565b60408051938452602084019290925282820152519081900360600190f35b6109a6600480360360c08110156109da57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a0013561216e565b6102f960048036036080811015610a2d57600080fd5b81359190810190604081016020820135640100000000811115610a4f57600080fd5b820183602082011115610a6157600080fd5b80359060200191846020830284011164010000000083111715610a8357600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561249a565b6000808242811015610b1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610b4c897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a611b2c565b9093509150610b5c8986856128e9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b50505050610bf18583612ab0565b50965096945050505050565b6000610c0a848484612bed565b949350505050565b60608142811015610c8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610ce957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b610de67f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b91508682600184510381518110610df957fe5b60200260200101511015610e58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613eaa602b913960400191505060405180910390fd5b610f1d86866000818110610e6857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633610f037f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610eb757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b6001818110610ee157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16612e77565b85600081518110610f1057fe5b6020026020010151612f62565b610f5c82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613132915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d83600185510381518110610fa857fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610fe657600080fd5b505af1158015610ffa573d6000803e3d6000fd5b5050505061101f848360018551038151811061101257fe5b6020026020010151612ab0565b509695505050505050565b60606110577f000000000000000000000000000000000000000000000000000000000000000084846133b9565b90505b92915050565b60008060006110907f00000000000000000000000000000000000000000000000000000000000000008f8f612e77565b905060008761109f578c6110c1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561115d57600080fd5b505af1158015611171573d6000803e3d6000fd5b505050506111848f8f8f8f8f8f8f611b2c565b809450819550505050509b509b9950505050505050505050565b6060814281101561121057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61126e7f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b9150868260018451038151811061128157fe5b602002602001015110156112e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613eaa602b913960400191505060405180910390fd5b6112f086866000818110610e6857fe5b61101f82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613132915050565b606081428110156113a157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061140657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6115037f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133b992505050565b9150868260008151811061151357fe5b60200260200101511115610e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613e1e6027913960400191505060405180910390fd5b606081428110156115e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061162857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6117257f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b9150868260018451038151811061173857fe5b60200260200101511015611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613eaa602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836000815181106117e057fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561181357600080fd5b505af1158015611827573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6118c37f00000000000000000000000000000000000000000000000000000000000000008989600081811061189957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a6001818110610ee157fe5b846000815181106118d057fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561194157600080fd5b505af1158015611955573d6000803e3d6000fd5b505050506040513d602081101561196b57600080fd5b505161197357fe5b6119b282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613132915050565b5095945050505050565b60608142811015611a2e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611a8c7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133b992505050565b91508682600081518110611a9c57fe5b602002602001015111156112e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613e1e6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610c0a848484613547565b6000808242811015611b9f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000611bcc7f00000000000000000000000000000000000000000000000000000000000000008c8c612e77565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015611c4d57600080fd5b505af1158015611c61573d6000803e3d6000fd5b505050506040513d6020811015611c7757600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015611cea57600080fd5b505af1158015611cfe573d6000803e3d6000fd5b505050506040513d6040811015611d1457600080fd5b50805160209091015190925090506000611d2e8e8e613627565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614611d6b578183611d6e565b82825b90975095508a871015611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613fc56026913960400191505060405180910390fd5b89861015611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613f9f6026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606110577f00000000000000000000000000000000000000000000000000000000000000008484612d11565b6000806000611ed77f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000612e77565b9050600087611ee6578c611f08565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b158015611fa457600080fd5b505af1158015611fb8573d6000803e3d6000fd5b50505050611fca8e8e8e8e8e8e610aaa565b909f909e509c50505050505050505050505050565b6000806000834281101561205457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6120628c8c8c8c8c8c61377a565b909450925060006120947f00000000000000000000000000000000000000000000000000000000000000008e8e612e77565b90506120a28d338388612f62565b6120ae8c338387612f62565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561212d57600080fd5b505af1158015612141573d6000803e3d6000fd5b505050506040513d602081101561215757600080fd5b5051949d939c50939a509198505050505050505050565b600080600083428110156121e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6122118a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c61377a565b909450925060006122637f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000612e77565b90506122718b338388612f62565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156122d957600080fd5b505af11580156122ed573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561239957600080fd5b505af11580156123ad573d6000803e3d6000fd5b505050506040513d60208110156123c357600080fd5b50516123cb57fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561244a57600080fd5b505af115801561245e573d6000803e3d6000fd5b505050506040513d602081101561247457600080fd5b505192503484101561248c5761248c33853403612ab0565b505096509650969350505050565b6060814281101561250c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061255057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61264d7f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133b992505050565b9150348260008151811061265d57fe5b602002602001015111156126bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613e1e6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061270557fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561273857600080fd5b505af115801561274c573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6127be7f00000000000000000000000000000000000000000000000000000000000000008989600081811061189957fe5b846000815181106127cb57fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561283c57600080fd5b505af1158015612850573d6000803e3d6000fd5b505050506040513d602081101561286657600080fd5b505161286e57fe5b6128ad82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613132915050565b816000815181106128ba57fe5b60200260200101513411156119b2576119b233836000815181106128da57fe5b60200260200101513403612ab0565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b602083106129bf57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612982565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612a21576040519150601f19603f3d011682016040523d82523d6000602084013e612a26565b606091505b5091509150818015612a54575080511580612a545750808060200190516020811015612a5157600080fd5b50515b612aa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613f72602d913960400191505060405180910390fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310612b2757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612aea565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612b89576040519150601f19603f3d011682016040523d82523d6000602084013e612b8e565b606091505b5050905080612be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613e766034913960400191505060405180910390fd5b505050565b6000808411612c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613f1f602b913960400191505060405180910390fd5b600083118015612c575750600082115b612cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f4a6028913960400191505060405180910390fd5b6000612cc0856103e563ffffffff613a7b16565b90506000612cd4828563ffffffff613a7b16565b90506000612cfa83612cee886103e863ffffffff613a7b16565b9063ffffffff613b0116565b9050808281612d0557fe5b04979650505050505050565b6060600282511015612d8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015612d9c57600080fd5b50604051908082528060200260200182016040528015612dc6578160200160208202803683370190505b5090508281600081518110612dd757fe5b60200260200101818152505060005b6001835103811015612e6f57600080612e2987868581518110612e0557fe5b6020026020010151878660010181518110612e1c57fe5b6020026020010151613b73565b91509150612e4b848481518110612e3c57fe5b60200260200101518383612bed565b848460010181518110612e5a57fe5b60209081029190910101525050600101612de6565b509392505050565b6000806000612e868585613627565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061304057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613003565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146130a2576040519150601f19603f3d011682016040523d82523d6000602084013e6130a7565b606091505b50915091508180156130d55750805115806130d557508080602001905160208110156130d257600080fd5b50515b61312a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613e456031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156133b35760008084838151811061315057fe5b602002602001015185846001018151811061316757fe5b602002602001015191509150600061317f8383613627565b509050600087856001018151811061319357fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146131db578260006131df565b6000835b91509150600060028a510388106131f65788613237565b6132377f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061322a57fe5b6020026020010151612e77565b90506132647f00000000000000000000000000000000000000000000000000000000000000008888612e77565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156132ae576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613339578181015183820152602001613321565b50505050905090810190601f1680156133665780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561338857600080fd5b505af115801561339c573d6000803e3d6000fd5b505060019099019850613135975050505050505050565b50505050565b606060028251101561342c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561344457600080fd5b5060405190808252806020026020018201604052801561346e578160200160208202803683370190505b509050828160018351038151811061348257fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b8015612e6f576000806134e2878660018603815181106134ce57fe5b6020026020010151878681518110612e1c57fe5b915091506135048484815181106134f557fe5b60200260200101518383613c5b565b84600185038151811061351357fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016134b2565b60008084116135a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613efa6025913960400191505060405180910390fd5b6000831180156135b15750600082115b613606576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f4a6028913960400191505060405180910390fd5b82613617858463ffffffff613a7b16565b8161361e57fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156136af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613ed56025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106136e95782846136ec565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff821661377357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b15801561381a57600080fd5b505afa15801561382e573d6000803e3d6000fd5b505050506040513d602081101561384457600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561392a57604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156138fd57600080fd5b505af1158015613911573d6000803e3d6000fd5b505050506040513d602081101561392757600080fd5b50505b6000806139587f00000000000000000000000000000000000000000000000000000000000000008b8b613b73565b9150915081600014801561396a575080155b1561397a57879350869250613a6e565b6000613987898484613547565b90508781116139f457858110156139e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613f9f6026913960400191505060405180910390fd5b889450925082613a6c565b6000613a01898486613547565b905089811115613a0d57fe5b87811015613a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613fc56026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000811580613a9657505080820282828281613a9357fe5b04145b61105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b6000806000613b828585613627565b509050600080613b93888888612e77565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613bd857600080fd5b505afa158015613bec573d6000803e3d6000fd5b505050506040513d6060811015613c0257600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff87811690841614613c49578082613c4c565b81815b90999098509650505050505050565b6000808411613cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613df2602c913960400191505060405180910390fd5b600083118015613cc55750600082115b613d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f4a6028913960400191505060405180910390fd5b6000613d3e6103e8613d32868863ffffffff613a7b16565b9063ffffffff613a7b16565b90506000613d586103e5613d32868963ffffffff613d7f16565b9050613d756001828481613d6857fe5b049063ffffffff613b0116565b9695505050505050565b8082038281111561105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fdfe4d61725844455856324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e544d6172584445585632526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534d61725844455856324c6962726172793a20494e53554646494349454e545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f425f414d4f554e544d6172584445585632526f757465723a20494e53554646494349454e545f415f414d4f554e54a26469706673582212201c5a383409ecdb562ca3da5e8d642e843b7c47eba96db5b435b897f7fa08c59864736f6c63430006060033",
          "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x415C CODESIZE SUB DUP1 PUSH2 0x415C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x4020 PUSH2 0x13C PUSH1 0x0 CODECOPY DUP1 PUSH2 0x165 MSTORE DUP1 PUSH2 0xB23 MSTORE DUP1 PUSH2 0xB5E MSTORE DUP1 PUSH2 0xC9B MSTORE DUP1 PUSH2 0xF5E MSTORE DUP1 PUSH2 0x13B8 MSTORE DUP1 PUSH2 0x15E6 MSTORE DUP1 PUSH2 0x1799 MSTORE DUP1 PUSH2 0x182E MSTORE DUP1 PUSH2 0x1AFD MSTORE DUP1 PUSH2 0x1EB3 MSTORE DUP1 PUSH2 0x21E9 MSTORE DUP1 PUSH2 0x223F MSTORE DUP1 PUSH2 0x2273 MSTORE DUP1 PUSH2 0x22F4 MSTORE DUP1 PUSH2 0x250E MSTORE DUP1 PUSH2 0x26BE MSTORE DUP1 PUSH2 0x2753 MSTORE POP DUP1 PUSH2 0xD8D MSTORE DUP1 PUSH2 0xE8B MSTORE DUP1 PUSH2 0x1031 MSTORE DUP1 PUSH2 0x106A MSTORE DUP1 PUSH2 0x1215 MSTORE DUP1 PUSH2 0x14AA MSTORE DUP1 PUSH2 0x16CC MSTORE DUP1 PUSH2 0x186D MSTORE DUP1 PUSH2 0x1A33 MSTORE DUP1 PUSH2 0x1BA6 MSTORE DUP1 PUSH2 0x1E38 MSTORE DUP1 PUSH2 0x1E61 MSTORE DUP1 PUSH2 0x1E91 MSTORE DUP1 PUSH2 0x206E MSTORE DUP1 PUSH2 0x221D MSTORE DUP1 PUSH2 0x25F4 MSTORE DUP1 PUSH2 0x2792 MSTORE DUP1 PUSH2 0x31FB MSTORE DUP1 PUSH2 0x323E MSTORE DUP1 PUSH2 0x37D1 MSTORE DUP1 PUSH2 0x38B2 MSTORE DUP1 PUSH2 0x3932 MSTORE POP PUSH2 0x4020 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x148 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8803DBEE GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xD06CA61F GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xE8E33700 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE8E33700 EQ PUSH2 0x937 JUMPI DUP1 PUSH4 0xF305D719 EQ PUSH2 0x9C4 JUMPI DUP1 PUSH4 0xFB3BDB41 EQ PUSH2 0xA17 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0xD06CA61F EQ PUSH2 0x800 JUMPI DUP1 PUSH4 0xDED9382A EQ PUSH2 0x8B7 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0xAD615DEC GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xAD615DEC EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0xBAA2ABDE EQ PUSH2 0x781 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x7EB JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x8803DBEE EQ PUSH2 0x668 JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x70D JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x2195995C GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x4A25D94A GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x4A25D94A EQ PUSH2 0x530 JUMPI DUP1 PUSH4 0x7FF36AB5 EQ PUSH2 0x5D5 JUMPI DUP1 PUSH4 0x85F8C259 EQ PUSH2 0x20C JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x2195995C EQ PUSH2 0x400 JUMPI DUP1 PUSH4 0x38ED1739 EQ PUSH2 0x48B JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x2751CEC EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0x54D50D4 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x18CBAFE5 EQ PUSH2 0x254 JUMPI DUP1 PUSH4 0x1F00CA74 EQ PUSH2 0x349 JUMPI PUSH2 0x18E JUMP JUMPDEST CALLDATASIZE PUSH2 0x18E JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x18C JUMPI INVALID JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0xAAA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x242 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x29E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC12 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x335 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x31D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x355 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x102A SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x160 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH2 0x100 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x120 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x140 ADD CALLDATALOAD PUSH2 0x1060 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x509 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x119E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x553 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x57A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x58C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x132F JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x5EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x60D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x61F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x641 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1572 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x68B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x19BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x722 PUSH2 0x1AFB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x242 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x76E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1B1F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x78D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x7A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1B2C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x722 PUSH2 0x1E36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x80C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x823 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x845 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x857 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x879 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1E5A SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0x8DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x1E87 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x943 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x95B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0xC0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x1FDF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x9A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x9DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x216E JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x249A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0xB1D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xB4C DUP10 PUSH32 0x0 DUP11 DUP11 DUP11 ADDRESS DUP11 PUSH2 0x1B2C JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0xB5C DUP10 DUP7 DUP6 PUSH2 0x28E9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xBF1 DUP6 DUP4 PUSH2 0x2AB0 JUMP JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC0A DUP5 DUP5 DUP5 PUSH2 0x2BED JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0xC84 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0xCE9 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xD88 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xDE6 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2D11 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0xDF9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0xE58 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3EAA PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xF1D DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xE68 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0xF03 PUSH32 0x0 DUP11 DUP11 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xEB7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 DUP12 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xEE1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2E77 JUMP JUMPDEST DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xF10 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2F62 JUMP JUMPDEST PUSH2 0xF5C DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x3132 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0xFA8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFFA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x101F DUP5 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1012 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2AB0 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1057 PUSH32 0x0 DUP5 DUP5 PUSH2 0x33B9 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1090 PUSH32 0x0 DUP16 DUP16 PUSH2 0x2E77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x109F JUMPI DUP13 PUSH2 0x10C1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x115D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1171 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1184 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x1B2C JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP POP POP SWAP12 POP SWAP12 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1210 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x126E PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2D11 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1281 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x12E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3EAA PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12F0 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xE68 JUMPI INVALID JUMPDEST PUSH2 0x101F DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3132 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x13A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1406 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x14A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1503 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x33B9 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1513 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xE58 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3E1E PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x15E4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1628 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x16C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1725 PUSH32 0x0 CALLVALUE DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2D11 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1738 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x1797 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3EAA PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x17E0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1813 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1827 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x18C3 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1899 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 DUP11 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xEE1 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x18D0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1941 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1955 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x196B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1973 JUMPI INVALID JUMPDEST PUSH2 0x19B2 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3132 SWAP2 POP POP JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1A2E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1A8C PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x33B9 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1A9C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x12E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3E1E PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC0A DUP5 DUP5 DUP5 PUSH2 0x3547 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1B9F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1BCC PUSH32 0x0 DUP13 DUP13 PUSH2 0x2E77 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C61 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x89AFCB4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 DUP7 AND SWAP3 PUSH4 0x89AFCB44 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1D14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x1D2E DUP15 DUP15 PUSH2 0x3627 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D6B JUMPI DUP2 DUP4 PUSH2 0x1D6E JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP1 SWAP8 POP SWAP6 POP DUP11 DUP8 LT ISZERO PUSH2 0x1DCC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FC5 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 DUP7 LT ISZERO PUSH2 0x1E25 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F9F PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1057 PUSH32 0x0 DUP5 DUP5 PUSH2 0x2D11 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1ED7 PUSH32 0x0 DUP15 PUSH32 0x0 PUSH2 0x2E77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x1EE6 JUMPI DUP13 PUSH2 0x1F08 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1FCA DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0xAAA JUMP JUMPDEST SWAP1 SWAP16 SWAP1 SWAP15 POP SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2054 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2062 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x377A JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x2094 PUSH32 0x0 DUP15 DUP15 PUSH2 0x2E77 JUMP JUMPDEST SWAP1 POP PUSH2 0x20A2 DUP14 CALLER DUP4 DUP9 PUSH2 0x2F62 JUMP JUMPDEST PUSH2 0x20AE DUP13 CALLER DUP4 DUP8 PUSH2 0x2F62 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x212D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2141 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP14 SWAP4 SWAP13 POP SWAP4 SWAP11 POP SWAP2 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x21E3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2211 DUP11 PUSH32 0x0 DUP12 CALLVALUE DUP13 DUP13 PUSH2 0x377A JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x2263 PUSH32 0x0 DUP13 PUSH32 0x0 PUSH2 0x2E77 JUMP JUMPDEST SWAP1 POP PUSH2 0x2271 DUP12 CALLER DUP4 DUP9 PUSH2 0x2F62 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP3 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x23CB JUMPI INVALID JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x244A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x245E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP CALLVALUE DUP5 LT ISZERO PUSH2 0x248C JUMPI PUSH2 0x248C CALLER DUP6 CALLVALUE SUB PUSH2 0x2AB0 JUMP JUMPDEST POP POP SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x250C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x2550 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x25EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x264D PUSH32 0x0 DUP9 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x33B9 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP CALLVALUE DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x265D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x26BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3E1E PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2705 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x274C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x27BE PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1899 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x27CB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x283C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2850 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2866 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x286E JUMPI INVALID JUMPDEST PUSH2 0x28AD DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3132 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x28BA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0x19B2 JUMPI PUSH2 0x19B2 CALLER DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x28DA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE SUB PUSH2 0x2AB0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x29BF JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2982 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2A21 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2A26 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2A54 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2A54 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x2AA9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F72 PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2B27 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2AEA JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2B89 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2B8E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2BE8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3E76 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x2C47 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F1F PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x2C57 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x2CAC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F4A PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2CC0 DUP6 PUSH2 0x3E5 PUSH4 0xFFFFFFFF PUSH2 0x3A7B AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2CD4 DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x3A7B AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2CFA DUP4 PUSH2 0x2CEE DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x3A7B AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3B01 AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x2D05 JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x2D84 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A20494E56414C49445F504154480000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2D9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2DC6 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2DD7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x2E6F JUMPI PUSH1 0x0 DUP1 PUSH2 0x2E29 DUP8 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2E05 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x2E1C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3B73 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2E4B DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2E3C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x2BED JUMP JUMPDEST DUP5 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x2E5A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x2DE6 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2E86 DUP6 DUP6 PUSH2 0x3627 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x236595447338C75B512D89A54E3B5160E3A38C8FFE13F0E88C634CA037665806 PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3040 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3003 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x30A2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x30A7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x30D5 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x30D5 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x312A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3E45 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x33B3 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3150 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3167 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x317F DUP4 DUP4 PUSH2 0x3627 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP8 DUP6 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3193 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x31DB JUMPI DUP3 PUSH1 0x0 PUSH2 0x31DF JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP11 MLOAD SUB DUP9 LT PUSH2 0x31F6 JUMPI DUP9 PUSH2 0x3237 JUMP JUMPDEST PUSH2 0x3237 PUSH32 0x0 DUP8 DUP13 DUP12 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x322A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2E77 JUMP JUMPDEST SWAP1 POP PUSH2 0x3264 PUSH32 0x0 DUP9 DUP9 PUSH2 0x2E77 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP5 DUP5 DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x32AE JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3339 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3321 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3366 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x339C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP10 ADD SWAP9 POP PUSH2 0x3135 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x342C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A20494E56414C49445F504154480000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x346E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x3482 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD JUMPDEST DUP1 ISZERO PUSH2 0x2E6F JUMPI PUSH1 0x0 DUP1 PUSH2 0x34E2 DUP8 DUP7 PUSH1 0x1 DUP7 SUB DUP2 MLOAD DUP2 LT PUSH2 0x34CE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x2E1C JUMPI INVALID JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3504 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x34F5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x3C5B JUMP JUMPDEST DUP5 PUSH1 0x1 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x3513 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH2 0x34B2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x35A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3EFA PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x35B1 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3606 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F4A PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x3617 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3A7B AND JUMP JUMPDEST DUP2 PUSH2 0x361E JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x36AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3ED5 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x36E9 JUMPI DUP3 DUP5 PUSH2 0x36EC JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x3773 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xE6A4390500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xE6A43905 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x381A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x382E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3844 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x392A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0xC9C6539600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xC9C65396 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3911 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3927 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3958 PUSH32 0x0 DUP12 DUP12 PUSH2 0x3B73 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ DUP1 ISZERO PUSH2 0x396A JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x397A JUMPI DUP8 SWAP4 POP DUP7 SWAP3 POP PUSH2 0x3A6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3987 DUP10 DUP5 DUP5 PUSH2 0x3547 JUMP JUMPDEST SWAP1 POP DUP8 DUP2 GT PUSH2 0x39F4 JUMPI DUP6 DUP2 LT ISZERO PUSH2 0x39E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F9F PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 SWAP5 POP SWAP3 POP DUP3 PUSH2 0x3A6C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A01 DUP10 DUP5 DUP7 PUSH2 0x3547 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 GT ISZERO PUSH2 0x3A0D JUMPI INVALID JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x3A66 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FC5 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 POP DUP8 SWAP4 POP JUMPDEST POP JUMPDEST POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x3A96 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x3A93 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x105A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x105A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3B82 DUP6 DUP6 PUSH2 0x3627 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x3B93 DUP9 DUP9 DUP9 PUSH2 0x2E77 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3BEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3C02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x3C49 JUMPI DUP1 DUP3 PUSH2 0x3C4C JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3CB5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3DF2 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3CC5 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3D1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F4A PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3D3E PUSH2 0x3E8 PUSH2 0x3D32 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x3A7B AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3A7B AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3D58 PUSH2 0x3E5 PUSH2 0x3D32 DUP7 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3D7F AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3D75 PUSH1 0x1 DUP3 DUP5 DUP2 PUSH2 0x3D68 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3B01 AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x105A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN MSTORE PUSH16 0x757465723A204558434553534956455F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SLOAD PUSH19 0x616E7366657248656C7065723A3A7472616E73 PUSH7 0x657246726F6D3A KECCAK256 PUSH21 0x72616E7366657246726F6D206661696C6564547261 PUSH15 0x7366657248656C7065723A3A736166 PUSH6 0x5472616E7366 PUSH6 0x724554483A20 GASLIMIT SLOAD 0x48 KECCAK256 PUSH21 0x72616E73666572206661696C65644D617258444558 JUMP ORIGIN MSTORE PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494445 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE SLOAD PUSH19 0x616E7366657248656C7065723A3A7361666554 PUSH19 0x616E736665723A207472616E73666572206661 PUSH10 0x6C65644D617258444558 JUMP ORIGIN MSTORE PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F TIMESTAMP 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN MSTORE PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F COINBASE 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR GAS CODESIZE CALLVALUE MULMOD 0xEC 0xDB JUMP 0x2C LOG3 0xDA 0x5E DUP14 PUSH5 0x2E843B7C47 0xEB 0xA9 PUSH14 0xB5B435B897F7FA08C59864736F6C PUSH4 0x43000606 STOP CALLER ",
          "sourceMap": "335:12388:7:-:0;;;611:109;5:9:-1;2:2;;;27:1;24;17:12;2:2;611:109:7;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;611:109:7;;;;;;;-1:-1:-1;;;;;;673:18:7;;;;;;;;701:12;;;;;335:12388;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {
            "1808": [
              {
                "length": 32,
                "start": 3469
              },
              {
                "length": 32,
                "start": 3723
              },
              {
                "length": 32,
                "start": 4145
              },
              {
                "length": 32,
                "start": 4202
              },
              {
                "length": 32,
                "start": 4629
              },
              {
                "length": 32,
                "start": 5290
              },
              {
                "length": 32,
                "start": 5836
              },
              {
                "length": 32,
                "start": 6253
              },
              {
                "length": 32,
                "start": 6707
              },
              {
                "length": 32,
                "start": 7078
              },
              {
                "length": 32,
                "start": 7736
              },
              {
                "length": 32,
                "start": 7777
              },
              {
                "length": 32,
                "start": 7825
              },
              {
                "length": 32,
                "start": 8302
              },
              {
                "length": 32,
                "start": 8733
              },
              {
                "length": 32,
                "start": 9716
              },
              {
                "length": 32,
                "start": 10130
              },
              {
                "length": 32,
                "start": 12795
              },
              {
                "length": 32,
                "start": 12862
              },
              {
                "length": 32,
                "start": 14289
              },
              {
                "length": 32,
                "start": 14514
              },
              {
                "length": 32,
                "start": 14642
              }
            ],
            "1811": [
              {
                "length": 32,
                "start": 357
              },
              {
                "length": 32,
                "start": 2851
              },
              {
                "length": 32,
                "start": 2910
              },
              {
                "length": 32,
                "start": 3227
              },
              {
                "length": 32,
                "start": 3934
              },
              {
                "length": 32,
                "start": 5048
              },
              {
                "length": 32,
                "start": 5606
              },
              {
                "length": 32,
                "start": 6041
              },
              {
                "length": 32,
                "start": 6190
              },
              {
                "length": 32,
                "start": 6909
              },
              {
                "length": 32,
                "start": 7859
              },
              {
                "length": 32,
                "start": 8681
              },
              {
                "length": 32,
                "start": 8767
              },
              {
                "length": 32,
                "start": 8819
              },
              {
                "length": 32,
                "start": 8948
              },
              {
                "length": 32,
                "start": 9486
              },
              {
                "length": 32,
                "start": 9918
              },
              {
                "length": 32,
                "start": 10067
              }
            ]
          },
          "linkReferences": {},
          "object": "6080604052600436106101485760003560e01c80638803dbee116100c0578063d06ca61f11610074578063e8e3370011610059578063e8e3370014610937578063f305d719146109c4578063fb3bdb4114610a175761018e565b8063d06ca61f14610800578063ded9382a146108b75761018e565b8063ad615dec116100a5578063ad615dec1461074b578063baa2abde14610781578063c45a0155146107eb5761018e565b80638803dbee14610668578063ad5c46481461070d5761018e565b80632195995c116101175780634a25d94a116100fc5780634a25d94a146105305780637ff36ab5146105d557806385f8c2591461020c5761018e565b80632195995c1461040057806338ed17391461048b5761018e565b806302751cec14610193578063054d50d41461020c57806318cbafe5146102545780631f00ca74146103495761018e565b3661018e573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461018c57fe5b005b600080fd5b34801561019f57600080fd5b506101f3600480360360c08110156101b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610aaa565b6040805192835260208301919091528051918290030190f35b34801561021857600080fd5b506102426004803603606081101561022f57600080fd5b5080359060208101359060400135610bfd565b60408051918252519081900360200190f35b34801561026057600080fd5b506102f9600480360360a081101561027757600080fd5b81359160208101359181019060608101604082013564010000000081111561029e57600080fd5b8201836020820111156102b057600080fd5b803590602001918460208302840111640100000000831117156102d257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c12565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561033557818101518382015260200161031d565b505050509050019250505060405180910390f35b34801561035557600080fd5b506102f96004803603604081101561036c57600080fd5b8135919081019060408101602082013564010000000081111561038e57600080fd5b8201836020820111156103a057600080fd5b803590602001918460208302840111640100000000831117156103c257600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061102a945050505050565b34801561040c57600080fd5b506101f3600480360361016081101561042457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611060565b34801561049757600080fd5b506102f9600480360360a08110156104ae57600080fd5b8135916020810135918101906060810160408201356401000000008111156104d557600080fd5b8201836020820111156104e757600080fd5b8035906020019184602083028401116401000000008311171561050957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561119e565b34801561053c57600080fd5b506102f9600480360360a081101561055357600080fd5b81359160208101359181019060608101604082013564010000000081111561057a57600080fd5b82018360208201111561058c57600080fd5b803590602001918460208302840111640100000000831117156105ae57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561132f565b6102f9600480360360808110156105eb57600080fd5b8135919081019060408101602082013564010000000081111561060d57600080fd5b82018360208201111561061f57600080fd5b8035906020019184602083028401116401000000008311171561064157600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611572565b34801561067457600080fd5b506102f9600480360360a081101561068b57600080fd5b8135916020810135918101906060810160408201356401000000008111156106b257600080fd5b8201836020820111156106c457600080fd5b803590602001918460208302840111640100000000831117156106e657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119bc565b34801561071957600080fd5b50610722611afb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561075757600080fd5b506102426004803603606081101561076e57600080fd5b5080359060208101359060400135611b1f565b34801561078d57600080fd5b506101f3600480360360e08110156107a457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135611b2c565b3480156107f757600080fd5b50610722611e36565b34801561080c57600080fd5b506102f96004803603604081101561082357600080fd5b8135919081019060408101602082013564010000000081111561084557600080fd5b82018360208201111561085757600080fd5b8035906020019184602083028401116401000000008311171561087957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611e5a945050505050565b3480156108c357600080fd5b506101f360048036036101408110156108db57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611e87565b34801561094357600080fd5b506109a6600480360361010081101561095b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135611fdf565b60408051938452602084019290925282820152519081900360600190f35b6109a6600480360360c08110156109da57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a0013561216e565b6102f960048036036080811015610a2d57600080fd5b81359190810190604081016020820135640100000000811115610a4f57600080fd5b820183602082011115610a6157600080fd5b80359060200191846020830284011164010000000083111715610a8357600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561249a565b6000808242811015610b1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610b4c897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a611b2c565b9093509150610b5c8986856128e9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b50505050610bf18583612ab0565b50965096945050505050565b6000610c0a848484612bed565b949350505050565b60608142811015610c8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610ce957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b610de67f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b91508682600184510381518110610df957fe5b60200260200101511015610e58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613eaa602b913960400191505060405180910390fd5b610f1d86866000818110610e6857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633610f037f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610eb757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b6001818110610ee157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16612e77565b85600081518110610f1057fe5b6020026020010151612f62565b610f5c82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613132915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d83600185510381518110610fa857fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610fe657600080fd5b505af1158015610ffa573d6000803e3d6000fd5b5050505061101f848360018551038151811061101257fe5b6020026020010151612ab0565b509695505050505050565b60606110577f000000000000000000000000000000000000000000000000000000000000000084846133b9565b90505b92915050565b60008060006110907f00000000000000000000000000000000000000000000000000000000000000008f8f612e77565b905060008761109f578c6110c1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561115d57600080fd5b505af1158015611171573d6000803e3d6000fd5b505050506111848f8f8f8f8f8f8f611b2c565b809450819550505050509b509b9950505050505050505050565b6060814281101561121057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61126e7f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b9150868260018451038151811061128157fe5b602002602001015110156112e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613eaa602b913960400191505060405180910390fd5b6112f086866000818110610e6857fe5b61101f82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613132915050565b606081428110156113a157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061140657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6115037f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133b992505050565b9150868260008151811061151357fe5b60200260200101511115610e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613e1e6027913960400191505060405180910390fd5b606081428110156115e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061162857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6117257f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b9150868260018451038151811061173857fe5b60200260200101511015611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613eaa602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836000815181106117e057fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561181357600080fd5b505af1158015611827573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6118c37f00000000000000000000000000000000000000000000000000000000000000008989600081811061189957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a6001818110610ee157fe5b846000815181106118d057fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561194157600080fd5b505af1158015611955573d6000803e3d6000fd5b505050506040513d602081101561196b57600080fd5b505161197357fe5b6119b282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613132915050565b5095945050505050565b60608142811015611a2e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611a8c7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133b992505050565b91508682600081518110611a9c57fe5b602002602001015111156112e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613e1e6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610c0a848484613547565b6000808242811015611b9f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000611bcc7f00000000000000000000000000000000000000000000000000000000000000008c8c612e77565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015611c4d57600080fd5b505af1158015611c61573d6000803e3d6000fd5b505050506040513d6020811015611c7757600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015611cea57600080fd5b505af1158015611cfe573d6000803e3d6000fd5b505050506040513d6040811015611d1457600080fd5b50805160209091015190925090506000611d2e8e8e613627565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614611d6b578183611d6e565b82825b90975095508a871015611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613fc56026913960400191505060405180910390fd5b89861015611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613f9f6026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606110577f00000000000000000000000000000000000000000000000000000000000000008484612d11565b6000806000611ed77f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000612e77565b9050600087611ee6578c611f08565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b158015611fa457600080fd5b505af1158015611fb8573d6000803e3d6000fd5b50505050611fca8e8e8e8e8e8e610aaa565b909f909e509c50505050505050505050505050565b6000806000834281101561205457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6120628c8c8c8c8c8c61377a565b909450925060006120947f00000000000000000000000000000000000000000000000000000000000000008e8e612e77565b90506120a28d338388612f62565b6120ae8c338387612f62565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561212d57600080fd5b505af1158015612141573d6000803e3d6000fd5b505050506040513d602081101561215757600080fd5b5051949d939c50939a509198505050505050505050565b600080600083428110156121e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6122118a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c61377a565b909450925060006122637f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000612e77565b90506122718b338388612f62565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156122d957600080fd5b505af11580156122ed573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561239957600080fd5b505af11580156123ad573d6000803e3d6000fd5b505050506040513d60208110156123c357600080fd5b50516123cb57fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561244a57600080fd5b505af115801561245e573d6000803e3d6000fd5b505050506040513d602081101561247457600080fd5b505192503484101561248c5761248c33853403612ab0565b505096509650969350505050565b6060814281101561250c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061255057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61264d7f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133b992505050565b9150348260008151811061265d57fe5b602002602001015111156126bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613e1e6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061270557fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561273857600080fd5b505af115801561274c573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6127be7f00000000000000000000000000000000000000000000000000000000000000008989600081811061189957fe5b846000815181106127cb57fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561283c57600080fd5b505af1158015612850573d6000803e3d6000fd5b505050506040513d602081101561286657600080fd5b505161286e57fe5b6128ad82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613132915050565b816000815181106128ba57fe5b60200260200101513411156119b2576119b233836000815181106128da57fe5b60200260200101513403612ab0565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b602083106129bf57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612982565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612a21576040519150601f19603f3d011682016040523d82523d6000602084013e612a26565b606091505b5091509150818015612a54575080511580612a545750808060200190516020811015612a5157600080fd5b50515b612aa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613f72602d913960400191505060405180910390fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310612b2757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612aea565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612b89576040519150601f19603f3d011682016040523d82523d6000602084013e612b8e565b606091505b5050905080612be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613e766034913960400191505060405180910390fd5b505050565b6000808411612c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613f1f602b913960400191505060405180910390fd5b600083118015612c575750600082115b612cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f4a6028913960400191505060405180910390fd5b6000612cc0856103e563ffffffff613a7b16565b90506000612cd4828563ffffffff613a7b16565b90506000612cfa83612cee886103e863ffffffff613a7b16565b9063ffffffff613b0116565b9050808281612d0557fe5b04979650505050505050565b6060600282511015612d8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015612d9c57600080fd5b50604051908082528060200260200182016040528015612dc6578160200160208202803683370190505b5090508281600081518110612dd757fe5b60200260200101818152505060005b6001835103811015612e6f57600080612e2987868581518110612e0557fe5b6020026020010151878660010181518110612e1c57fe5b6020026020010151613b73565b91509150612e4b848481518110612e3c57fe5b60200260200101518383612bed565b848460010181518110612e5a57fe5b60209081029190910101525050600101612de6565b509392505050565b6000806000612e868585613627565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061304057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613003565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146130a2576040519150601f19603f3d011682016040523d82523d6000602084013e6130a7565b606091505b50915091508180156130d55750805115806130d557508080602001905160208110156130d257600080fd5b50515b61312a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613e456031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156133b35760008084838151811061315057fe5b602002602001015185846001018151811061316757fe5b602002602001015191509150600061317f8383613627565b509050600087856001018151811061319357fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146131db578260006131df565b6000835b91509150600060028a510388106131f65788613237565b6132377f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061322a57fe5b6020026020010151612e77565b90506132647f00000000000000000000000000000000000000000000000000000000000000008888612e77565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156132ae576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613339578181015183820152602001613321565b50505050905090810190601f1680156133665780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561338857600080fd5b505af115801561339c573d6000803e3d6000fd5b505060019099019850613135975050505050505050565b50505050565b606060028251101561342c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561344457600080fd5b5060405190808252806020026020018201604052801561346e578160200160208202803683370190505b509050828160018351038151811061348257fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b8015612e6f576000806134e2878660018603815181106134ce57fe5b6020026020010151878681518110612e1c57fe5b915091506135048484815181106134f557fe5b60200260200101518383613c5b565b84600185038151811061351357fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016134b2565b60008084116135a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613efa6025913960400191505060405180910390fd5b6000831180156135b15750600082115b613606576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f4a6028913960400191505060405180910390fd5b82613617858463ffffffff613a7b16565b8161361e57fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156136af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613ed56025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106136e95782846136ec565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff821661377357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b15801561381a57600080fd5b505afa15801561382e573d6000803e3d6000fd5b505050506040513d602081101561384457600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561392a57604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156138fd57600080fd5b505af1158015613911573d6000803e3d6000fd5b505050506040513d602081101561392757600080fd5b50505b6000806139587f00000000000000000000000000000000000000000000000000000000000000008b8b613b73565b9150915081600014801561396a575080155b1561397a57879350869250613a6e565b6000613987898484613547565b90508781116139f457858110156139e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613f9f6026913960400191505060405180910390fd5b889450925082613a6c565b6000613a01898486613547565b905089811115613a0d57fe5b87811015613a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613fc56026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000811580613a9657505080820282828281613a9357fe5b04145b61105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b6000806000613b828585613627565b509050600080613b93888888612e77565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613bd857600080fd5b505afa158015613bec573d6000803e3d6000fd5b505050506040513d6060811015613c0257600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff87811690841614613c49578082613c4c565b81815b90999098509650505050505050565b6000808411613cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613df2602c913960400191505060405180910390fd5b600083118015613cc55750600082115b613d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f4a6028913960400191505060405180910390fd5b6000613d3e6103e8613d32868863ffffffff613a7b16565b9063ffffffff613a7b16565b90506000613d586103e5613d32868963ffffffff613d7f16565b9050613d756001828481613d6857fe5b049063ffffffff613b0116565b9695505050505050565b8082038281111561105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fdfe4d61725844455856324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e544d6172584445585632526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534d61725844455856324c6962726172793a20494e53554646494349454e545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f425f414d4f554e544d6172584445585632526f757465723a20494e53554646494349454e545f415f414d4f554e54a26469706673582212201c5a383409ecdb562ca3da5e8d642e843b7c47eba96db5b435b897f7fa08c59864736f6c63430006060033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x148 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8803DBEE GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xD06CA61F GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xE8E33700 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE8E33700 EQ PUSH2 0x937 JUMPI DUP1 PUSH4 0xF305D719 EQ PUSH2 0x9C4 JUMPI DUP1 PUSH4 0xFB3BDB41 EQ PUSH2 0xA17 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0xD06CA61F EQ PUSH2 0x800 JUMPI DUP1 PUSH4 0xDED9382A EQ PUSH2 0x8B7 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0xAD615DEC GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xAD615DEC EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0xBAA2ABDE EQ PUSH2 0x781 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x7EB JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x8803DBEE EQ PUSH2 0x668 JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x70D JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x2195995C GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x4A25D94A GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x4A25D94A EQ PUSH2 0x530 JUMPI DUP1 PUSH4 0x7FF36AB5 EQ PUSH2 0x5D5 JUMPI DUP1 PUSH4 0x85F8C259 EQ PUSH2 0x20C JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x2195995C EQ PUSH2 0x400 JUMPI DUP1 PUSH4 0x38ED1739 EQ PUSH2 0x48B JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x2751CEC EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0x54D50D4 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x18CBAFE5 EQ PUSH2 0x254 JUMPI DUP1 PUSH4 0x1F00CA74 EQ PUSH2 0x349 JUMPI PUSH2 0x18E JUMP JUMPDEST CALLDATASIZE PUSH2 0x18E JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x18C JUMPI INVALID JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x19F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0xAAA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x242 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xBFD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x29E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC12 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x335 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x31D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x355 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x102A SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x160 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH2 0x100 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x120 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x140 ADD CALLDATALOAD PUSH2 0x1060 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x509 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x119E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x553 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x57A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x58C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x132F JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x5EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x60D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x61F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x641 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1572 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x68B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x6E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x19BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x722 PUSH2 0x1AFB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x242 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x76E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1B1F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x78D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x7A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1B2C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x722 PUSH2 0x1E36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x80C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x823 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x845 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x857 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x879 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1E5A SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0x8DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x1E87 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x943 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x95B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0xC0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x1FDF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x9A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x9DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x216E JUMP JUMPDEST PUSH2 0x2F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x249A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0xB1D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xB4C DUP10 PUSH32 0x0 DUP11 DUP11 DUP11 ADDRESS DUP11 PUSH2 0x1B2C JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0xB5C DUP10 DUP7 DUP6 PUSH2 0x28E9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xBF1 DUP6 DUP4 PUSH2 0x2AB0 JUMP JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC0A DUP5 DUP5 DUP5 PUSH2 0x2BED JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0xC84 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0xCE9 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xD88 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xDE6 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2D11 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0xDF9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0xE58 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3EAA PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xF1D DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xE68 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0xF03 PUSH32 0x0 DUP11 DUP11 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xEB7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 DUP12 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xEE1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2E77 JUMP JUMPDEST DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xF10 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2F62 JUMP JUMPDEST PUSH2 0xF5C DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x3132 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0xFA8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFFA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x101F DUP5 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1012 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2AB0 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1057 PUSH32 0x0 DUP5 DUP5 PUSH2 0x33B9 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1090 PUSH32 0x0 DUP16 DUP16 PUSH2 0x2E77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x109F JUMPI DUP13 PUSH2 0x10C1 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x115D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1171 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1184 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x1B2C JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP POP POP SWAP12 POP SWAP12 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1210 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x126E PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2D11 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1281 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x12E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3EAA PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12F0 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xE68 JUMPI INVALID JUMPDEST PUSH2 0x101F DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3132 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x13A1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1406 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x14A5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1503 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x33B9 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1513 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xE58 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3E1E PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x15E4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1628 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x16C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1725 PUSH32 0x0 CALLVALUE DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2D11 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1738 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x1797 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3EAA PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x17E0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1813 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1827 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x18C3 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1899 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 DUP11 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xEE1 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x18D0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1941 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1955 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x196B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1973 JUMPI INVALID JUMPDEST PUSH2 0x19B2 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3132 SWAP2 POP POP JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1A2E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1A8C PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x33B9 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1A9C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x12E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3E1E PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC0A DUP5 DUP5 DUP5 PUSH2 0x3547 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1B9F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1BCC PUSH32 0x0 DUP13 DUP13 PUSH2 0x2E77 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C61 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x89AFCB4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 DUP7 AND SWAP3 PUSH4 0x89AFCB44 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1CFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1D14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x1D2E DUP15 DUP15 PUSH2 0x3627 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D6B JUMPI DUP2 DUP4 PUSH2 0x1D6E JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP1 SWAP8 POP SWAP6 POP DUP11 DUP8 LT ISZERO PUSH2 0x1DCC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FC5 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 DUP7 LT ISZERO PUSH2 0x1E25 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F9F PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1057 PUSH32 0x0 DUP5 DUP5 PUSH2 0x2D11 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1ED7 PUSH32 0x0 DUP15 PUSH32 0x0 PUSH2 0x2E77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x1EE6 JUMPI DUP13 PUSH2 0x1F08 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1FCA DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0xAAA JUMP JUMPDEST SWAP1 SWAP16 SWAP1 SWAP15 POP SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2054 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2062 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x377A JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x2094 PUSH32 0x0 DUP15 DUP15 PUSH2 0x2E77 JUMP JUMPDEST SWAP1 POP PUSH2 0x20A2 DUP14 CALLER DUP4 DUP9 PUSH2 0x2F62 JUMP JUMPDEST PUSH2 0x20AE DUP13 CALLER DUP4 DUP8 PUSH2 0x2F62 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x212D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2141 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP14 SWAP4 SWAP13 POP SWAP4 SWAP11 POP SWAP2 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x21E3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2211 DUP11 PUSH32 0x0 DUP12 CALLVALUE DUP13 DUP13 PUSH2 0x377A JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x2263 PUSH32 0x0 DUP13 PUSH32 0x0 PUSH2 0x2E77 JUMP JUMPDEST SWAP1 POP PUSH2 0x2271 DUP12 CALLER DUP4 DUP9 PUSH2 0x2F62 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP3 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x23CB JUMPI INVALID JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x244A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x245E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP CALLVALUE DUP5 LT ISZERO PUSH2 0x248C JUMPI PUSH2 0x248C CALLER DUP6 CALLVALUE SUB PUSH2 0x2AB0 JUMP JUMPDEST POP POP SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x250C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x2550 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x25EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x264D PUSH32 0x0 DUP9 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x33B9 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP CALLVALUE DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x265D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x26BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3E1E PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2705 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x274C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x27BE PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1899 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x27CB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x283C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2850 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2866 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x286E JUMPI INVALID JUMPDEST PUSH2 0x28AD DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3132 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x28BA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0x19B2 JUMPI PUSH2 0x19B2 CALLER DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x28DA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE SUB PUSH2 0x2AB0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x29BF JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2982 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2A21 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2A26 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2A54 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2A54 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x2AA9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F72 PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2B27 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2AEA JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2B89 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2B8E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2BE8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3E76 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x2C47 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F1F PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x2C57 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x2CAC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F4A PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2CC0 DUP6 PUSH2 0x3E5 PUSH4 0xFFFFFFFF PUSH2 0x3A7B AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2CD4 DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x3A7B AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2CFA DUP4 PUSH2 0x2CEE DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x3A7B AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3B01 AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x2D05 JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x2D84 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A20494E56414C49445F504154480000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2D9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2DC6 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2DD7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x2E6F JUMPI PUSH1 0x0 DUP1 PUSH2 0x2E29 DUP8 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2E05 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x2E1C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3B73 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2E4B DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2E3C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x2BED JUMP JUMPDEST DUP5 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x2E5A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x2DE6 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2E86 DUP6 DUP6 PUSH2 0x3627 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x236595447338C75B512D89A54E3B5160E3A38C8FFE13F0E88C634CA037665806 PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3040 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3003 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x30A2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x30A7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x30D5 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x30D5 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x312A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3E45 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x33B3 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3150 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3167 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x317F DUP4 DUP4 PUSH2 0x3627 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP8 DUP6 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3193 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x31DB JUMPI DUP3 PUSH1 0x0 PUSH2 0x31DF JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP11 MLOAD SUB DUP9 LT PUSH2 0x31F6 JUMPI DUP9 PUSH2 0x3237 JUMP JUMPDEST PUSH2 0x3237 PUSH32 0x0 DUP8 DUP13 DUP12 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x322A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2E77 JUMP JUMPDEST SWAP1 POP PUSH2 0x3264 PUSH32 0x0 DUP9 DUP9 PUSH2 0x2E77 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP5 DUP5 DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x32AE JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3339 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3321 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3366 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x339C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP10 ADD SWAP9 POP PUSH2 0x3135 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x342C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A20494E56414C49445F504154480000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x346E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x3482 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD JUMPDEST DUP1 ISZERO PUSH2 0x2E6F JUMPI PUSH1 0x0 DUP1 PUSH2 0x34E2 DUP8 DUP7 PUSH1 0x1 DUP7 SUB DUP2 MLOAD DUP2 LT PUSH2 0x34CE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x2E1C JUMPI INVALID JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3504 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x34F5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x3C5B JUMP JUMPDEST DUP5 PUSH1 0x1 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x3513 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH2 0x34B2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x35A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3EFA PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x35B1 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3606 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F4A PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x3617 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3A7B AND JUMP JUMPDEST DUP2 PUSH2 0x361E JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x36AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3ED5 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x36E9 JUMPI DUP3 DUP5 PUSH2 0x36EC JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x3773 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xE6A4390500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xE6A43905 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x381A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x382E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3844 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x392A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0xC9C6539600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xC9C65396 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3911 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3927 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3958 PUSH32 0x0 DUP12 DUP12 PUSH2 0x3B73 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ DUP1 ISZERO PUSH2 0x396A JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x397A JUMPI DUP8 SWAP4 POP DUP7 SWAP3 POP PUSH2 0x3A6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3987 DUP10 DUP5 DUP5 PUSH2 0x3547 JUMP JUMPDEST SWAP1 POP DUP8 DUP2 GT PUSH2 0x39F4 JUMPI DUP6 DUP2 LT ISZERO PUSH2 0x39E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F9F PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 SWAP5 POP SWAP3 POP DUP3 PUSH2 0x3A6C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A01 DUP10 DUP5 DUP7 PUSH2 0x3547 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 GT ISZERO PUSH2 0x3A0D JUMPI INVALID JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x3A66 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FC5 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 POP DUP8 SWAP4 POP JUMPDEST POP JUMPDEST POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x3A96 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x3A93 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x105A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x105A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3B82 DUP6 DUP6 PUSH2 0x3627 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x3B93 DUP9 DUP9 DUP9 PUSH2 0x2E77 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3BD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3BEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3C02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x3C49 JUMPI DUP1 DUP3 PUSH2 0x3C4C JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3CB5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3DF2 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3CC5 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3D1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F4A PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3D3E PUSH2 0x3E8 PUSH2 0x3D32 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x3A7B AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3A7B AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3D58 PUSH2 0x3E5 PUSH2 0x3D32 DUP7 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3D7F AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3D75 PUSH1 0x1 DUP3 DUP5 DUP2 PUSH2 0x3D68 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3B01 AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x105A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN MSTORE PUSH16 0x757465723A204558434553534956455F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SLOAD PUSH19 0x616E7366657248656C7065723A3A7472616E73 PUSH7 0x657246726F6D3A KECCAK256 PUSH21 0x72616E7366657246726F6D206661696C6564547261 PUSH15 0x7366657248656C7065723A3A736166 PUSH6 0x5472616E7366 PUSH6 0x724554483A20 GASLIMIT SLOAD 0x48 KECCAK256 PUSH21 0x72616E73666572206661696C65644D617258444558 JUMP ORIGIN MSTORE PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494445 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE SLOAD PUSH19 0x616E7366657248656C7065723A3A7361666554 PUSH19 0x616E736665723A207472616E73666572206661 PUSH10 0x6C65644D617258444558 JUMP ORIGIN MSTORE PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F TIMESTAMP 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN MSTORE PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F COINBASE 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR GAS CODESIZE CALLVALUE MULMOD 0xEC 0xDB JUMP 0x2C LOG3 0xDA 0x5E DUP14 PUSH5 0x2E843B7C47 0xEB 0xA9 PUSH14 0xB5B435B897F7FA08C59864736F6C PUSH4 0x43000606 STOP CALLER ",
          "sourceMap": "335:12388:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;770:10;:18;784:4;770:18;;763:26;;;;335:12388;;12:1:-1;9;2:12;4788:645:7;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4788:645:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;4788:645:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11913:202;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11913:202:7;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11913:202:7;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10152:796;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10152:796:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;10152:796:7;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;10152:796:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;10152:796:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10152:796:7;;-1:-1:-1;10152:796:7;-1:-1:-1;10152:796:7;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10152:796:7;;;;;;;;;;;;;;;;;12528:193;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12528:193:7;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;12528:193:7;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;12528:193:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;12528:193:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;12528:193:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;12528:193:7;;-1:-1:-1;12528:193:7;;-1:-1:-1;;;;;12528:193:7:i;5438:655::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5438:655:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;5438:655:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7543:585::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7543:585:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;7543:585:7;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;7543:585:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;7543:585:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;7543:585:7;;-1:-1:-1;7543:585:7;-1:-1:-1;7543:585:7;;;;;;;;;:::i;9373:774::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9373:774:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;9373:774:7;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;9373:774:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;9373:774:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9373:774:7;;-1:-1:-1;9373:774:7;-1:-1:-1;9373:774:7;;;;;;;;;:::i;8701:667::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;8701:667:7;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;8701:667:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;8701:667:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8701:667:7;;-1:-1:-1;8701:667:7;-1:-1:-1;8701:667:7;;;;;;;;;:::i;8133:563::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8133:563:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;8133:563:7;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;8133:563:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;8133:563:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8133:563:7;;-1:-1:-1;8133:563:7;-1:-1:-1;8133:563:7;;;;;;;;;:::i;437:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;437:38:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11729:178;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11729:178:7;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11729:178:7;;;;;;;;;;;;:::i;3942:841::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3942:841:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;3942:841:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;390:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;390:41:7;;;:::i;12329:193::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12329:193:7;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;12329:193:7;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;12329:193:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;12329:193:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;12329:193:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;12329:193:7;;-1:-1:-1;12329:193:7;;-1:-1:-1;;;;;12329:193:7:i;6098:648::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6098:648:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;6098:648:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2247:715::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2247:715:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;2247:715:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;2967:935;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;2967:935:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10953:770::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;10953:770:7;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;10953:770:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;10953:770:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10953:770:7;;-1:-1:-1;10953:770:7;-1:-1:-1;10953:770:7;;;;;;;;;:::i;4788:645::-;5010:16;5028:14;4991:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5081:188:::1;5110:5;5129:4;5147:9;5170:14;5198:12;5232:4;5251:8;5081:15;:188::i;:::-;5054:215:::0;;-1:-1:-1;5054:215:7;-1:-1:-1;5279:51:7::1;5307:5:::0;5314:2;5054:215;5279:27:::1;:51::i;:::-;5346:4;5340:20;;;5361:9;5340:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;5340:31:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;5340:31:7;;;;5381:45;5412:2;5416:9;5381:30;:45::i;:::-;4788:645:::0;;;;;;;;;;:::o;11913:202::-;12013:14;12046:62;12076:8;12086:9;12097:10;12046:29;:62::i;:::-;12039:69;11913:202;-1:-1:-1;;;;11913:202:7:o;10152:796::-;10345:21;10318:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10390:29:::1;10415:4;10390:29;:4:::0;;10395:15;;;10390:21;;::::1;;;;;;;;;;;;;:29;;;10382:71;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10473:55;10504:7;10513:8;10523:4;;10473:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;10473:30:7::1;::::0;-1:-1:-1;;;10473:55:7:i:1;:::-;10463:65;;10577:12;10546:7;10571:1;10554:7;:14;:18;10546:27;;;;;;;;;;;;;;:43;;10538:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10647:117;10679:4;;10684:1;10679:7;;;;;;;;;;;;;;;10688:10;10700:51;10725:7;10734:4;;10739:1;10734:7;;;;;;;;;;;;;;;10743:4;;10748:1;10743:7;;;;;;;;;;;;;;;10700:24;:51::i;:::-;10753:7;10761:1;10753:10;;;;;;;;;;;;;;10647:31;:117::i;:::-;10774:35;10780:7;10789:4;;10774:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;10803:4:7::1;::::0;-1:-1:-1;10774:5:7::1;::::0;-1:-1:-1;;10774:35:7:i:1;:::-;10825:4;10819:20;;;10840:7;10865:1;10848:7;:14;:18;10840:27;;;;;;;;;;;;;;10819:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;10819:49:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;10819:49:7;;;;10878:63;10909:2;10913:7;10938:1;10921:7;:14;:18;10913:27;;;;;;;;;;;;;;10878:30;:63::i;:::-;10152:796:::0;;;;;;;;;:::o;12528:193::-;12619:21;12659:55;12689:7;12698:9;12709:4;12659:29;:55::i;:::-;12652:62;;12528:193;;;;;:::o;5438:655::-;5727:12;5741;5765;5780:49;5805:7;5814:6;5822;5780:24;:49::i;:::-;5765:64;;5839:10;5852;:33;;5876:9;5852:33;;;5870:2;5852:33;5895:80;;;;;;5923:10;5895:80;;;;5943:4;5895:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5839:46;;-1:-1:-1;5895:27:7;;;;;;:80;;;;;-1:-1:-1;;5895:80:7;;;;;;;;-1:-1:-1;5895:27:7;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;5895:80:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5895:80:7;;;;6006;6022:6;6030;6038:9;6049:10;6061;6073:2;6077:8;6006:15;:80::i;:::-;5985:101;;;;;;;;5438:655;;;;;;;;;;;;;;;;:::o;7543:585::-;7753:21;7734:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7796:55:::1;7827:7;7836:8;7846:4;;7796:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;7796:30:7::1;::::0;-1:-1:-1;;;7796:55:7:i:1;:::-;7786:65;;7900:12;7869:7;7894:1;7877:7;:14;:18;7869:27;;;;;;;;;;;;;;:43;;7861:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7970:117;8002:4;;8007:1;8002:7;;;;;;7970:117;8097:24;8103:7;8112:4;;8097:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;8118:2:7;;-1:-1:-1;8097:5:7::1;::::0;-1:-1:-1;;8097:24:7:i:1;9373:774::-:0;9566:21;9539:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9611:29:::1;9636:4;9611:29;:4:::0;;9616:15;;;9611:21;;::::1;;;;;;;;;;;;;:29;;;9603:71;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;9694:55;9724:7;9733:9;9744:4;;9694:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;9694:29:7::1;::::0;-1:-1:-1;;;9694:55:7:i:1;:::-;9684:65;;9781:11;9767:7;9775:1;9767:10;;;;;;;;;;;;;;:25;;9759:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8701:667:::0;8895:21;8868:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8951:4:::1;8940:15;;:4;;8945:1;8940:7;;;;;;;;;;;;;;;:15;;;8932:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;9009:56;9040:7;9049:9;9060:4;;9009:56;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;9009:30:7::1;::::0;-1:-1:-1;;;9009:56:7:i:1;:::-;8999:66;;9114:12;9083:7;9108:1;9091:7;:14;:18;9083:27;;;;;;;;;;;;;;:43;;9075:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9190:4;9184:19;;;9211:7;9219:1;9211:10;;;;;;;;;;;;;;9184:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;9184:40:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;9184:40:7;;;;;9247:4;9241:20;;;9262:51;9287:7;9296:4;;9301:1;9296:7;;;;;;;;;;;;;;;9305:4;;9310:1;9305:7;;;;;;9262:51;9315:7;9323:1;9315:10;;;;;;;;;;;;;;9241:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;9241:85:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;9241:85:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;9241:85:7;9234:93:::1;;;;9337:24;9343:7;9352:4;;9337:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;9358:2:7;;-1:-1:-1;9337:5:7::1;::::0;-1:-1:-1;;9337:24:7:i:1;:::-;8701:667:::0;;;;;;;;:::o;8133:563::-;8343:21;8324:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8386:55:::1;8416:7;8425:9;8436:4;;8386:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;8386:29:7::1;::::0;-1:-1:-1;;;8386:55:7:i:1;:::-;8376:65;;8473:11;8459:7;8467:1;8459:10;;;;;;;;;;;;;;:25;;8451:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;437:38:::0;;;:::o;11729:178::-;11818:12;11849:51;11872:7;11881:8;11891;11849:22;:51::i;3942:841::-;4180:12;4194;4161:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4218:12:::1;4233:49;4258:7;4267:6;4275;4233:24;:49::i;:::-;4292:62;::::0;;;;;4326:10:::1;4292:62;::::0;::::1;::::0;:33:::1;::::0;::::1;:62:::0;;;;;;;;;;;;;;4218:64;;-1:-1:-1;4292:33:7;;::::1;::::0;:62;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;4292:33:7;:62;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;4292:62:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4292:62:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;4421:29:7::1;::::0;;;;;:25:::1;:29:::0;;::::1;;::::0;::::1;::::0;;;4391:12:::1;::::0;;;4421:25;;::::1;::::0;::::1;::::0;:29;;;;;;;;;;;4391:12;4421:25;:29;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;4421:29:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4421:29:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;4421:29:7;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;4421:29:7;-1:-1:-1;4461:14:7::1;4480:43;4508:6:::0;4516;4480:27:::1;:43::i;:::-;4460:63;;;4564:6;4554:16;;:6;:16;;;:58;;4595:7;4604;4554:58;;;4574:7;4583;4554:58;4533:79:::0;;-1:-1:-1;4533:79:7;-1:-1:-1;4630:21:7;;::::1;;4622:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4723:10;4712:7;:21;;4704:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;597:1;;;;3942:841:::0;;;;;;;;;;;:::o;390:41::-;;;:::o;12329:193::-;12420:21;12460:55;12491:7;12500:8;12510:4;12460:30;:55::i;6098:648::-;6371:16;6389:14;6415:12;6430:46;6455:7;6464:5;6471:4;6430:24;:46::i;:::-;6415:61;;6486:10;6499;:33;;6523:9;6499:33;;;6517:2;6499:33;6542:80;;;;;;6570:10;6542:80;;;;6590:4;6542:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6486:46;;-1:-1:-1;6542:27:7;;;;;;:80;;;;;-1:-1:-1;;6542:80:7;;;;;;;;-1:-1:-1;6542:27:7;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;6542:80:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6542:80:7;;;;6659;6678:5;6685:9;6696:14;6712:12;6726:2;6730:8;6659:18;:80::i;:::-;6632:107;;;;-1:-1:-1;6098:648:7;-1:-1:-1;;;;;;;;;;;;;6098:648:7:o;2247:715::-;2518:12;2532;2546:14;2499:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2593:85:::1;2607:6;2615;2623:14;2639;2655:10;2667;2593:13;:85::i;:::-;2572:106:::0;;-1:-1:-1;2572:106:7;-1:-1:-1;2688:12:7::1;2703:49;2728:7;2737:6:::0;2745;2703:24:::1;:49::i;:::-;2688:64;;2762:66;2794:6;2802:10;2814:4;2820:7;2762:31;:66::i;:::-;2838;2870:6;2878:10;2890:4;2896:7;2838:31;:66::i;:::-;2941:4;2926:25;;;2952:2;2926:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;2926:29:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;2926:29:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;2926:29:7;2247:715;;;;-1:-1:-1;2926:29:7;;-1:-1:-1;2247:715:7;;-1:-1:-1;;;;;;;;;2247:715:7:o;2967:935::-;3205:16;3223:14;3239;3186:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3292:169:::1;3319:5;3338:4;3356:18;3388:9;3411:14;3439:12;3292:13;:169::i;:::-;3265:196:::0;;-1:-1:-1;3265:196:7;-1:-1:-1;3471:12:7::1;3486:46;3511:7;3520:5:::0;3527:4:::1;3486:24;:46::i;:::-;3471:61;;3542:69;3574:5;3581:10;3593:4;3599:11;3542:31;:69::i;:::-;3627:4;3621:19;;;3648:9;3621:39;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3621:39:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3621:39:7;;;;;3683:4;3677:20;;;3698:4;3704:9;3677:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3677:37:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3677:37:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3677:37:7;3670:45:::1;;;;3752:4;3737:25;;;3763:2;3737:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3737:29:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3737:29:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3737:29:7;;-1:-1:-1;3780:9:7::1;:21:::0;-1:-1:-1;3776:92:7::1;;;3803:65;3834:10;3858:9;3846;:21;3803:30;:65::i;:::-;597:1;2967:935:::0;;;;;;;;;;;:::o;10953:770::-;11144:21;11117:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11200:4:::1;11189:15;;:4;;11194:1;11189:7;;;;;;;;;;;;;;;:15;;;11181:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;11258:55;11288:7;11297:9;11308:4;;11258:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11258:29:7::1;::::0;-1:-1:-1;;;11258:55:7:i:1;:::-;11248:65;;11345:9;11331:7;11339:1;11331:10;;;;;;;;;;;;;;:23;;11323:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11414:4;11408:19;;;11435:7;11443:1;11435:10;;;;;;;;;;;;;;11408:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;11408:40:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;11408:40:7;;;;;11471:4;11465:20;;;11486:51;11511:7;11520:4;;11525:1;11520:7;;;;;;11486:51;11539:7;11547:1;11539:10;;;;;;;;;;;;;;11465:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;11465:85:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;11465:85:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;11465:85:7;11458:93:::1;;;;11561:24;11567:7;11576:4;;11561:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11582:2:7;;-1:-1:-1;11561:5:7::1;::::0;-1:-1:-1;;11561:24:7:i:1;:::-;11611:7;11619:1;11611:10;;;;;;;;;;;;;;11599:9;:22;11595:94;;;11623:66;11654:10;11678:7;11686:1;11678:10;;;;;;;;;;;;;;11666:9;:22;11623:30;:66::i;652:438:4:-:0;878:45;;;867:10;878:45;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;878:45:4;;;;;;;25:18:-1;;61:17;;96:58;182:15;878:45:4;179:29:-1;160:49;;867:57:4;;;;832:12;;846:17;;867:10;;;;878:45;867:57;;;25:18:-1;867:57:4;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;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:4;;;;;;;;;;;;;;;;;;;;;;;;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:4;;;;955:7;:57;;;;-1:-1:-1;967:11:4;;: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:4;967:44;934:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:438;;;;;:::o;1588:214::-;1700:12;;;1660;1700;;;;;;;;;1678:7;;;;1693:5;;1678:35;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;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:4;;;;;;;;;;;;;;;;;;;;;;;;;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:4;;;1731:7;1723:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1588:214;;;:::o;2183:510:17:-;2276:14;2321:1;2310:8;:12;2302:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2400:1;2388:9;:13;:31;;;;;2418:1;2405:10;:14;2388:31;2380:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2474:20;2497:17;:8;2510:3;2497:17;:12;:17;:::i;:::-;2474:40;-1:-1:-1;2524:14:17;2541:31;2474:40;2561:10;2541:31;:19;:31;:::i;:::-;2524:48;-1:-1:-1;2582:16:17;2601:40;2625:15;2601:19;:9;2615:4;2601:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;2582:59;;2675:11;2663:9;:23;;;;;;;2183:510;-1:-1:-1;;;;;;;2183:510:17:o;3356:503::-;3457:21;3513:1;3498:4;:11;:16;;3490:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3580:4;:11;3569:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3569:23:17;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;3569:23:17;;3559:33;;3615:8;3602:7;3610:1;3602:10;;;;;;;;;;;;;:21;;;;;3638:6;3633:220;3664:1;3650:4;:11;:15;3646:1;:19;3633:220;;;3687:14;3703:15;3722:42;3734:7;3743:4;3748:1;3743:7;;;;;;;;;;;;;;3752:4;3757:1;3761;3757:5;3752:11;;;;;;;;;;;;;;3722;:42::i;:::-;3686:78;;;;3795:47;3808:7;3816:1;3808:10;;;;;;;;;;;;;;3820:9;3831:10;3795:12;:47::i;:::-;3778:7;3786:1;3790;3786:5;3778:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;3667:3:17;;3633:220;;;;3356:503;;;;;:::o;725:470::-;814:12;839:14;855;873:26;884:6;892;873:10;:26::i;:::-;1033:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1033:32:17;;;;;1023:43;;;;;;939:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;939:246:17;;;;;;;929:257;;;;;;;;;725:470;-1:-1:-1;;;;;725:470:17:o;1096:486:4:-;1360:51;;;1349:10;1360:51;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1360:51:4;;;;;;;25:18:-1;;61:17;;96:58;182:15;1360:51:4;179:29:-1;160:49;;1349:63:4;;;;1314:12;;1328:17;;1349:10;;;;1360:51;1349:63;;;25:18:-1;1349:63:4;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;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;;;1349:63:4;;;;;;;;;;;;;;;;;;;;;;;;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;;1313:99:4;;;;1443:7;:57;;;;-1:-1:-1;1455:11:4;;:16;;:44;;;1486:4;1475:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1475:24:4;1455:44;1422:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1096:486;;;;;;:::o;6853:685:7:-;6950:6;6945:587;6976:1;6962:4;:11;:15;6958:1;:19;6945:587;;;6999:13;7014:14;7033:4;7038:1;7033:7;;;;;;;;;;;;;;7042:4;7047:1;7051;7047:5;7042:11;;;;;;;;;;;;;;6998:56;;;;7069:14;7088:42;7116:5;7123:6;7088:27;:42::i;:::-;7068:62;;;7144:14;7161:7;7169:1;7173;7169:5;7161:14;;;;;;;;;;;;;;7144:31;;7190:15;7207;7235:6;7226:15;;:5;:15;;;:61;;7268:9;7284:1;7226:61;;;7250:1;7254:9;7226:61;7189:98;;;;7301:10;7332:1;7318:4;:11;:15;7314:1;:19;:82;;7393:3;7314:82;;;7336:54;7361:7;7370:6;7378:4;7383:1;7387;7383:5;7378:11;;;;;;;;;;;;;;7336:24;:54::i;:::-;7301:95;;7425:48;7450:7;7459:5;7466:6;7425:24;:48::i;:::-;7410:69;;;7480:10;7492;7504:2;7518:1;7508:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;7508:12:7;87:42:-1;143:17;;-1:-1;7508:12:7;;7410:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7410:111:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7410:111:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;6979:3:7;;;;;-1:-1:-1;6945:587:7;;-1:-1:-1;;;;;;;;6945:587:7;;;6853:685;;;:::o;3937:524:17:-;4038:21;4094:1;4079:4;:11;:16;;4071:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4161:4;:11;4150:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4150:23:17;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;4150:23:17;;4140:33;;4213:9;4183:7;4208:1;4191:7;:14;:18;4183:27;;;;;;;;;;;;;;;;;:39;4246:11;;:15;;4232:223;4263:5;;4232:223;;4290:14;4306:15;4325:42;4337:7;4346:4;4355:1;4351;:5;4346:11;;;;;;;;;;;;;;4359:4;4364:1;4359:7;;;;;;;4325:42;4289:78;;;;4398:46;4410:7;4418:1;4410:10;;;;;;;;;;;;;;4422:9;4433:10;4398:11;:46::i;:::-;4381:7;4393:1;4389;:5;4381:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;4270:3:17;;4232:223;;1747:317;1829:12;1871:1;1861:7;:11;1853:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1943:1;1932:8;:12;:28;;;;;1959:1;1948:8;:12;1932:28;1924:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2049:8;2025:21;:7;2037:8;2025:21;:11;:21;:::i;:::-;:32;;;;;;;1747:317;-1:-1:-1;;;;1747:317:17:o;291:345::-;366:14;382;426:6;416:16;;:6;:16;;;;408:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:6;503:15;;:6;:15;;;:53;;541:6;549;503:53;;;522:6;530;503:53;484:72;;-1:-1:-1;484:72:17;-1:-1:-1;574:20:17;;;566:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:345;;;;;:::o;888:1354:7:-;1183:50;;;;;;:64;:50;;;;;;;;;;;;;;;;1090:12;;;;;;1201:7;1183:34;;;;;;:50;;;;;;;;;;;;;;;:34;:50;;;2:2:-1;;;;27:1;24;17:12;2:2;1183:50:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1183:50:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1183:50:7;:64;;;1179:148;;;1263:53;;;;;;:37;:53;;;;;;;;;;;;;;;;1281:7;1263:37;;;;;;:53;;;;;;;;;;;;;;;-1:-1:-1;1263:37:7;:53;;;2:2:-1;;;;27:1;24;17:12;2:2;1263:53:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1263:53:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;1179:148:7;1337:13;1352;1369:53;1398:7;1407:6;1415;1369:28;:53::i;:::-;1336:86;;;;1436:8;1448:1;1436:13;:30;;;;-1:-1:-1;1453:13:7;;1436:30;1432:804;;;1504:14;;-1:-1:-1;1520:14:7;;-1:-1:-1;1432:804:7;;;1566:19;1588:58;1611:14;1627:8;1637;1588:22;:58::i;:::-;1566:80;;1682:14;1664;:32;1660:566;;1742:10;1724:14;:28;;1716:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1835:14;;-1:-1:-1;1851:14:7;-1:-1:-1;1851:14:7;1660:566;;;1905:19;1927:58;1950:14;1966:8;1976;1927:22;:58::i;:::-;1905:80;;2028:14;2010;:32;;2003:40;;;;2087:10;2069:14;:28;;2061:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:14;-1:-1:-1;2196:14:7;;-1:-1:-1;1660:566:7;1432:804;;888:1354;;;;;;;;;;;:::o;419:140:20:-;471:6;497;;;:30;;-1:-1:-1;;512:5:20;;;526:1;521;512:5;521:1;507:15;;;;;:20;497:30;489:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;154:126;237:5;;;232:16;;;;224:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1250:387:17;1343:13;1358;1384:14;1403:26;1414:6;1422;1403:10;:26::i;:::-;1383:46;;;1440:13;1455;1488:32;1496:7;1505:6;1513;1488:7;:32::i;:::-;1473:60;;;:62;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1473:62:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1473:62:17;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1473:62:17;;;;;;;1439:96;;;;;-1:-1:-1;1439:96:17;;-1:-1:-1;1568:16:17;;;;;;;;:62;;1611:8;1621;1568:62;;;1588:8;1598;1568:62;1545:85;;;;-1:-1:-1;1250:387:17;-1:-1:-1;;;;;;;1250:387:17:o;2811:466::-;2904:13;2949:1;2937:9;:13;2929:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3029:1;3017:9;:13;:31;;;;;3047:1;3034:10;:14;3017:31;3009:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3103:14;3120:34;3149:4;3120:24;:9;3134;3120:24;:13;:24;:::i;:::-;:28;:34;:28;:34;:::i;:::-;3103:51;-1:-1:-1;3164:16:17;3183:34;3213:3;3183:25;:10;3198:9;3183:25;:14;:25;:::i;:34::-;3164:53;;3238:32;3268:1;3251:11;3239:9;:23;;;;;;;3238:32;:29;:32;:::i;:::-;3227:43;2811:466;-1:-1:-1;;;;;;2811:466:17:o;286:127:20:-;369:5;;;364:16;;;;356:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
        }
      },
      "interface": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_factory",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_WETH",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "WETH",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountADesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenDesired",
              "type": "uint256"
            },
            {
              "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": "addLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountIn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountOut",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsIn",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsOut",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveB",
              "type": "uint256"
            }
          ],
          "name": "quote",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "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": "removeLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapETHForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "bytecode": "60c060405234801561001057600080fd5b5060405161415c38038061415c8339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c61402061013c600039806101655280610b235280610b5e5280610c9b5280610f5e52806113b852806115e65280611799528061182e5280611afd5280611eb352806121e9528061223f528061227352806122f4528061250e52806126be5280612753525080610d8d5280610e8b5280611031528061106a528061121552806114aa52806116cc528061186d5280611a335280611ba65280611e385280611e615280611e91528061206e528061221d52806125f4528061279252806131fb528061323e52806137d152806138b2528061393252506140206000f3fe6080604052600436106101485760003560e01c80638803dbee116100c0578063d06ca61f11610074578063e8e3370011610059578063e8e3370014610937578063f305d719146109c4578063fb3bdb4114610a175761018e565b8063d06ca61f14610800578063ded9382a146108b75761018e565b8063ad615dec116100a5578063ad615dec1461074b578063baa2abde14610781578063c45a0155146107eb5761018e565b80638803dbee14610668578063ad5c46481461070d5761018e565b80632195995c116101175780634a25d94a116100fc5780634a25d94a146105305780637ff36ab5146105d557806385f8c2591461020c5761018e565b80632195995c1461040057806338ed17391461048b5761018e565b806302751cec14610193578063054d50d41461020c57806318cbafe5146102545780631f00ca74146103495761018e565b3661018e573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461018c57fe5b005b600080fd5b34801561019f57600080fd5b506101f3600480360360c08110156101b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610aaa565b6040805192835260208301919091528051918290030190f35b34801561021857600080fd5b506102426004803603606081101561022f57600080fd5b5080359060208101359060400135610bfd565b60408051918252519081900360200190f35b34801561026057600080fd5b506102f9600480360360a081101561027757600080fd5b81359160208101359181019060608101604082013564010000000081111561029e57600080fd5b8201836020820111156102b057600080fd5b803590602001918460208302840111640100000000831117156102d257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c12565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561033557818101518382015260200161031d565b505050509050019250505060405180910390f35b34801561035557600080fd5b506102f96004803603604081101561036c57600080fd5b8135919081019060408101602082013564010000000081111561038e57600080fd5b8201836020820111156103a057600080fd5b803590602001918460208302840111640100000000831117156103c257600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061102a945050505050565b34801561040c57600080fd5b506101f3600480360361016081101561042457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611060565b34801561049757600080fd5b506102f9600480360360a08110156104ae57600080fd5b8135916020810135918101906060810160408201356401000000008111156104d557600080fd5b8201836020820111156104e757600080fd5b8035906020019184602083028401116401000000008311171561050957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561119e565b34801561053c57600080fd5b506102f9600480360360a081101561055357600080fd5b81359160208101359181019060608101604082013564010000000081111561057a57600080fd5b82018360208201111561058c57600080fd5b803590602001918460208302840111640100000000831117156105ae57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561132f565b6102f9600480360360808110156105eb57600080fd5b8135919081019060408101602082013564010000000081111561060d57600080fd5b82018360208201111561061f57600080fd5b8035906020019184602083028401116401000000008311171561064157600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611572565b34801561067457600080fd5b506102f9600480360360a081101561068b57600080fd5b8135916020810135918101906060810160408201356401000000008111156106b257600080fd5b8201836020820111156106c457600080fd5b803590602001918460208302840111640100000000831117156106e657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119bc565b34801561071957600080fd5b50610722611afb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561075757600080fd5b506102426004803603606081101561076e57600080fd5b5080359060208101359060400135611b1f565b34801561078d57600080fd5b506101f3600480360360e08110156107a457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135611b2c565b3480156107f757600080fd5b50610722611e36565b34801561080c57600080fd5b506102f96004803603604081101561082357600080fd5b8135919081019060408101602082013564010000000081111561084557600080fd5b82018360208201111561085757600080fd5b8035906020019184602083028401116401000000008311171561087957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611e5a945050505050565b3480156108c357600080fd5b506101f360048036036101408110156108db57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611e87565b34801561094357600080fd5b506109a6600480360361010081101561095b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135611fdf565b60408051938452602084019290925282820152519081900360600190f35b6109a6600480360360c08110156109da57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a0013561216e565b6102f960048036036080811015610a2d57600080fd5b81359190810190604081016020820135640100000000811115610a4f57600080fd5b820183602082011115610a6157600080fd5b80359060200191846020830284011164010000000083111715610a8357600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561249a565b6000808242811015610b1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610b4c897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a611b2c565b9093509150610b5c8986856128e9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b50505050610bf18583612ab0565b50965096945050505050565b6000610c0a848484612bed565b949350505050565b60608142811015610c8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610ce957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b610de67f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b91508682600184510381518110610df957fe5b60200260200101511015610e58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613eaa602b913960400191505060405180910390fd5b610f1d86866000818110610e6857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633610f037f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610eb757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b6001818110610ee157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16612e77565b85600081518110610f1057fe5b6020026020010151612f62565b610f5c82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613132915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d83600185510381518110610fa857fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610fe657600080fd5b505af1158015610ffa573d6000803e3d6000fd5b5050505061101f848360018551038151811061101257fe5b6020026020010151612ab0565b509695505050505050565b60606110577f000000000000000000000000000000000000000000000000000000000000000084846133b9565b90505b92915050565b60008060006110907f00000000000000000000000000000000000000000000000000000000000000008f8f612e77565b905060008761109f578c6110c1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561115d57600080fd5b505af1158015611171573d6000803e3d6000fd5b505050506111848f8f8f8f8f8f8f611b2c565b809450819550505050509b509b9950505050505050505050565b6060814281101561121057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61126e7f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b9150868260018451038151811061128157fe5b602002602001015110156112e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613eaa602b913960400191505060405180910390fd5b6112f086866000818110610e6857fe5b61101f82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613132915050565b606081428110156113a157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061140657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6115037f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133b992505050565b9150868260008151811061151357fe5b60200260200101511115610e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613e1e6027913960400191505060405180910390fd5b606081428110156115e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061162857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6117257f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b9150868260018451038151811061173857fe5b60200260200101511015611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613eaa602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836000815181106117e057fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561181357600080fd5b505af1158015611827573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6118c37f00000000000000000000000000000000000000000000000000000000000000008989600081811061189957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a6001818110610ee157fe5b846000815181106118d057fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561194157600080fd5b505af1158015611955573d6000803e3d6000fd5b505050506040513d602081101561196b57600080fd5b505161197357fe5b6119b282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613132915050565b5095945050505050565b60608142811015611a2e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611a8c7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133b992505050565b91508682600081518110611a9c57fe5b602002602001015111156112e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613e1e6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610c0a848484613547565b6000808242811015611b9f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000611bcc7f00000000000000000000000000000000000000000000000000000000000000008c8c612e77565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015611c4d57600080fd5b505af1158015611c61573d6000803e3d6000fd5b505050506040513d6020811015611c7757600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015611cea57600080fd5b505af1158015611cfe573d6000803e3d6000fd5b505050506040513d6040811015611d1457600080fd5b50805160209091015190925090506000611d2e8e8e613627565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614611d6b578183611d6e565b82825b90975095508a871015611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613fc56026913960400191505060405180910390fd5b89861015611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613f9f6026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606110577f00000000000000000000000000000000000000000000000000000000000000008484612d11565b6000806000611ed77f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000612e77565b9050600087611ee6578c611f08565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b158015611fa457600080fd5b505af1158015611fb8573d6000803e3d6000fd5b50505050611fca8e8e8e8e8e8e610aaa565b909f909e509c50505050505050505050505050565b6000806000834281101561205457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6120628c8c8c8c8c8c61377a565b909450925060006120947f00000000000000000000000000000000000000000000000000000000000000008e8e612e77565b90506120a28d338388612f62565b6120ae8c338387612f62565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561212d57600080fd5b505af1158015612141573d6000803e3d6000fd5b505050506040513d602081101561215757600080fd5b5051949d939c50939a509198505050505050505050565b600080600083428110156121e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6122118a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c61377a565b909450925060006122637f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000612e77565b90506122718b338388612f62565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156122d957600080fd5b505af11580156122ed573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561239957600080fd5b505af11580156123ad573d6000803e3d6000fd5b505050506040513d60208110156123c357600080fd5b50516123cb57fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561244a57600080fd5b505af115801561245e573d6000803e3d6000fd5b505050506040513d602081101561247457600080fd5b505192503484101561248c5761248c33853403612ab0565b505096509650969350505050565b6060814281101561250c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061255057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61264d7f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133b992505050565b9150348260008151811061265d57fe5b602002602001015111156126bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613e1e6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061270557fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561273857600080fd5b505af115801561274c573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6127be7f00000000000000000000000000000000000000000000000000000000000000008989600081811061189957fe5b846000815181106127cb57fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561283c57600080fd5b505af1158015612850573d6000803e3d6000fd5b505050506040513d602081101561286657600080fd5b505161286e57fe5b6128ad82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613132915050565b816000815181106128ba57fe5b60200260200101513411156119b2576119b233836000815181106128da57fe5b60200260200101513403612ab0565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b602083106129bf57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612982565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612a21576040519150601f19603f3d011682016040523d82523d6000602084013e612a26565b606091505b5091509150818015612a54575080511580612a545750808060200190516020811015612a5157600080fd5b50515b612aa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613f72602d913960400191505060405180910390fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310612b2757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612aea565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612b89576040519150601f19603f3d011682016040523d82523d6000602084013e612b8e565b606091505b5050905080612be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613e766034913960400191505060405180910390fd5b505050565b6000808411612c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613f1f602b913960400191505060405180910390fd5b600083118015612c575750600082115b612cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f4a6028913960400191505060405180910390fd5b6000612cc0856103e563ffffffff613a7b16565b90506000612cd4828563ffffffff613a7b16565b90506000612cfa83612cee886103e863ffffffff613a7b16565b9063ffffffff613b0116565b9050808281612d0557fe5b04979650505050505050565b6060600282511015612d8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015612d9c57600080fd5b50604051908082528060200260200182016040528015612dc6578160200160208202803683370190505b5090508281600081518110612dd757fe5b60200260200101818152505060005b6001835103811015612e6f57600080612e2987868581518110612e0557fe5b6020026020010151878660010181518110612e1c57fe5b6020026020010151613b73565b91509150612e4b848481518110612e3c57fe5b60200260200101518383612bed565b848460010181518110612e5a57fe5b60209081029190910101525050600101612de6565b509392505050565b6000806000612e868585613627565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061304057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613003565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146130a2576040519150601f19603f3d011682016040523d82523d6000602084013e6130a7565b606091505b50915091508180156130d55750805115806130d557508080602001905160208110156130d257600080fd5b50515b61312a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613e456031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156133b35760008084838151811061315057fe5b602002602001015185846001018151811061316757fe5b602002602001015191509150600061317f8383613627565b509050600087856001018151811061319357fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146131db578260006131df565b6000835b91509150600060028a510388106131f65788613237565b6132377f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061322a57fe5b6020026020010151612e77565b90506132647f00000000000000000000000000000000000000000000000000000000000000008888612e77565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156132ae576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613339578181015183820152602001613321565b50505050905090810190601f1680156133665780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561338857600080fd5b505af115801561339c573d6000803e3d6000fd5b505060019099019850613135975050505050505050565b50505050565b606060028251101561342c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561344457600080fd5b5060405190808252806020026020018201604052801561346e578160200160208202803683370190505b509050828160018351038151811061348257fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b8015612e6f576000806134e2878660018603815181106134ce57fe5b6020026020010151878681518110612e1c57fe5b915091506135048484815181106134f557fe5b60200260200101518383613c5b565b84600185038151811061351357fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016134b2565b60008084116135a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613efa6025913960400191505060405180910390fd5b6000831180156135b15750600082115b613606576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f4a6028913960400191505060405180910390fd5b82613617858463ffffffff613a7b16565b8161361e57fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156136af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613ed56025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106136e95782846136ec565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff821661377357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b15801561381a57600080fd5b505afa15801561382e573d6000803e3d6000fd5b505050506040513d602081101561384457600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561392a57604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156138fd57600080fd5b505af1158015613911573d6000803e3d6000fd5b505050506040513d602081101561392757600080fd5b50505b6000806139587f00000000000000000000000000000000000000000000000000000000000000008b8b613b73565b9150915081600014801561396a575080155b1561397a57879350869250613a6e565b6000613987898484613547565b90508781116139f457858110156139e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613f9f6026913960400191505060405180910390fd5b889450925082613a6c565b6000613a01898486613547565b905089811115613a0d57fe5b87811015613a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613fc56026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000811580613a9657505080820282828281613a9357fe5b04145b61105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b6000806000613b828585613627565b509050600080613b93888888612e77565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613bd857600080fd5b505afa158015613bec573d6000803e3d6000fd5b505050506040513d6060811015613c0257600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff87811690841614613c49578082613c4c565b81815b90999098509650505050505050565b6000808411613cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613df2602c913960400191505060405180910390fd5b600083118015613cc55750600082115b613d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f4a6028913960400191505060405180910390fd5b6000613d3e6103e8613d32868863ffffffff613a7b16565b9063ffffffff613a7b16565b90506000613d586103e5613d32868963ffffffff613d7f16565b9050613d756001828481613d6857fe5b049063ffffffff613b0116565b9695505050505050565b8082038281111561105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fdfe4d61725844455856324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e544d6172584445585632526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534d61725844455856324c6962726172793a20494e53554646494349454e545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f425f414d4f554e544d6172584445585632526f757465723a20494e53554646494349454e545f415f414d4f554e54a26469706673582212201c5a383409ecdb562ca3da5e8d642e843b7c47eba96db5b435b897f7fa08c59864736f6c63430006060033",
      "bin": "60c060405234801561001057600080fd5b5060405161415c38038061415c8339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c61402061013c600039806101655280610b235280610b5e5280610c9b5280610f5e52806113b852806115e65280611799528061182e5280611afd5280611eb352806121e9528061223f528061227352806122f4528061250e52806126be5280612753525080610d8d5280610e8b5280611031528061106a528061121552806114aa52806116cc528061186d5280611a335280611ba65280611e385280611e615280611e91528061206e528061221d52806125f4528061279252806131fb528061323e52806137d152806138b2528061393252506140206000f3fe6080604052600436106101485760003560e01c80638803dbee116100c0578063d06ca61f11610074578063e8e3370011610059578063e8e3370014610937578063f305d719146109c4578063fb3bdb4114610a175761018e565b8063d06ca61f14610800578063ded9382a146108b75761018e565b8063ad615dec116100a5578063ad615dec1461074b578063baa2abde14610781578063c45a0155146107eb5761018e565b80638803dbee14610668578063ad5c46481461070d5761018e565b80632195995c116101175780634a25d94a116100fc5780634a25d94a146105305780637ff36ab5146105d557806385f8c2591461020c5761018e565b80632195995c1461040057806338ed17391461048b5761018e565b806302751cec14610193578063054d50d41461020c57806318cbafe5146102545780631f00ca74146103495761018e565b3661018e573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461018c57fe5b005b600080fd5b34801561019f57600080fd5b506101f3600480360360c08110156101b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610aaa565b6040805192835260208301919091528051918290030190f35b34801561021857600080fd5b506102426004803603606081101561022f57600080fd5b5080359060208101359060400135610bfd565b60408051918252519081900360200190f35b34801561026057600080fd5b506102f9600480360360a081101561027757600080fd5b81359160208101359181019060608101604082013564010000000081111561029e57600080fd5b8201836020820111156102b057600080fd5b803590602001918460208302840111640100000000831117156102d257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c12565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561033557818101518382015260200161031d565b505050509050019250505060405180910390f35b34801561035557600080fd5b506102f96004803603604081101561036c57600080fd5b8135919081019060408101602082013564010000000081111561038e57600080fd5b8201836020820111156103a057600080fd5b803590602001918460208302840111640100000000831117156103c257600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061102a945050505050565b34801561040c57600080fd5b506101f3600480360361016081101561042457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611060565b34801561049757600080fd5b506102f9600480360360a08110156104ae57600080fd5b8135916020810135918101906060810160408201356401000000008111156104d557600080fd5b8201836020820111156104e757600080fd5b8035906020019184602083028401116401000000008311171561050957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561119e565b34801561053c57600080fd5b506102f9600480360360a081101561055357600080fd5b81359160208101359181019060608101604082013564010000000081111561057a57600080fd5b82018360208201111561058c57600080fd5b803590602001918460208302840111640100000000831117156105ae57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561132f565b6102f9600480360360808110156105eb57600080fd5b8135919081019060408101602082013564010000000081111561060d57600080fd5b82018360208201111561061f57600080fd5b8035906020019184602083028401116401000000008311171561064157600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611572565b34801561067457600080fd5b506102f9600480360360a081101561068b57600080fd5b8135916020810135918101906060810160408201356401000000008111156106b257600080fd5b8201836020820111156106c457600080fd5b803590602001918460208302840111640100000000831117156106e657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119bc565b34801561071957600080fd5b50610722611afb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561075757600080fd5b506102426004803603606081101561076e57600080fd5b5080359060208101359060400135611b1f565b34801561078d57600080fd5b506101f3600480360360e08110156107a457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135611b2c565b3480156107f757600080fd5b50610722611e36565b34801561080c57600080fd5b506102f96004803603604081101561082357600080fd5b8135919081019060408101602082013564010000000081111561084557600080fd5b82018360208201111561085757600080fd5b8035906020019184602083028401116401000000008311171561087957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611e5a945050505050565b3480156108c357600080fd5b506101f360048036036101408110156108db57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611e87565b34801561094357600080fd5b506109a6600480360361010081101561095b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135611fdf565b60408051938452602084019290925282820152519081900360600190f35b6109a6600480360360c08110156109da57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a0013561216e565b6102f960048036036080811015610a2d57600080fd5b81359190810190604081016020820135640100000000811115610a4f57600080fd5b820183602082011115610a6157600080fd5b80359060200191846020830284011164010000000083111715610a8357600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561249a565b6000808242811015610b1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610b4c897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a611b2c565b9093509150610b5c8986856128e9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b50505050610bf18583612ab0565b50965096945050505050565b6000610c0a848484612bed565b949350505050565b60608142811015610c8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610ce957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b610de67f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b91508682600184510381518110610df957fe5b60200260200101511015610e58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613eaa602b913960400191505060405180910390fd5b610f1d86866000818110610e6857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633610f037f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610eb757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b6001818110610ee157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16612e77565b85600081518110610f1057fe5b6020026020010151612f62565b610f5c82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613132915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d83600185510381518110610fa857fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610fe657600080fd5b505af1158015610ffa573d6000803e3d6000fd5b5050505061101f848360018551038151811061101257fe5b6020026020010151612ab0565b509695505050505050565b60606110577f000000000000000000000000000000000000000000000000000000000000000084846133b9565b90505b92915050565b60008060006110907f00000000000000000000000000000000000000000000000000000000000000008f8f612e77565b905060008761109f578c6110c1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561115d57600080fd5b505af1158015611171573d6000803e3d6000fd5b505050506111848f8f8f8f8f8f8f611b2c565b809450819550505050509b509b9950505050505050505050565b6060814281101561121057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61126e7f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b9150868260018451038151811061128157fe5b602002602001015110156112e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613eaa602b913960400191505060405180910390fd5b6112f086866000818110610e6857fe5b61101f82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613132915050565b606081428110156113a157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061140657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6115037f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133b992505050565b9150868260008151811061151357fe5b60200260200101511115610e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613e1e6027913960400191505060405180910390fd5b606081428110156115e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061162857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6117257f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b9150868260018451038151811061173857fe5b60200260200101511015611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613eaa602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836000815181106117e057fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561181357600080fd5b505af1158015611827573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6118c37f00000000000000000000000000000000000000000000000000000000000000008989600081811061189957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a6001818110610ee157fe5b846000815181106118d057fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561194157600080fd5b505af1158015611955573d6000803e3d6000fd5b505050506040513d602081101561196b57600080fd5b505161197357fe5b6119b282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613132915050565b5095945050505050565b60608142811015611a2e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611a8c7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133b992505050565b91508682600081518110611a9c57fe5b602002602001015111156112e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613e1e6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610c0a848484613547565b6000808242811015611b9f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000611bcc7f00000000000000000000000000000000000000000000000000000000000000008c8c612e77565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015611c4d57600080fd5b505af1158015611c61573d6000803e3d6000fd5b505050506040513d6020811015611c7757600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015611cea57600080fd5b505af1158015611cfe573d6000803e3d6000fd5b505050506040513d6040811015611d1457600080fd5b50805160209091015190925090506000611d2e8e8e613627565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614611d6b578183611d6e565b82825b90975095508a871015611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613fc56026913960400191505060405180910390fd5b89861015611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613f9f6026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606110577f00000000000000000000000000000000000000000000000000000000000000008484612d11565b6000806000611ed77f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000612e77565b9050600087611ee6578c611f08565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b158015611fa457600080fd5b505af1158015611fb8573d6000803e3d6000fd5b50505050611fca8e8e8e8e8e8e610aaa565b909f909e509c50505050505050505050505050565b6000806000834281101561205457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6120628c8c8c8c8c8c61377a565b909450925060006120947f00000000000000000000000000000000000000000000000000000000000000008e8e612e77565b90506120a28d338388612f62565b6120ae8c338387612f62565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561212d57600080fd5b505af1158015612141573d6000803e3d6000fd5b505050506040513d602081101561215757600080fd5b5051949d939c50939a509198505050505050505050565b600080600083428110156121e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6122118a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c61377a565b909450925060006122637f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000612e77565b90506122718b338388612f62565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156122d957600080fd5b505af11580156122ed573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561239957600080fd5b505af11580156123ad573d6000803e3d6000fd5b505050506040513d60208110156123c357600080fd5b50516123cb57fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561244a57600080fd5b505af115801561245e573d6000803e3d6000fd5b505050506040513d602081101561247457600080fd5b505192503484101561248c5761248c33853403612ab0565b505096509650969350505050565b6060814281101561250c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061255057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61264d7f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133b992505050565b9150348260008151811061265d57fe5b602002602001015111156126bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613e1e6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061270557fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561273857600080fd5b505af115801561274c573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6127be7f00000000000000000000000000000000000000000000000000000000000000008989600081811061189957fe5b846000815181106127cb57fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561283c57600080fd5b505af1158015612850573d6000803e3d6000fd5b505050506040513d602081101561286657600080fd5b505161286e57fe5b6128ad82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613132915050565b816000815181106128ba57fe5b60200260200101513411156119b2576119b233836000815181106128da57fe5b60200260200101513403612ab0565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b602083106129bf57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612982565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612a21576040519150601f19603f3d011682016040523d82523d6000602084013e612a26565b606091505b5091509150818015612a54575080511580612a545750808060200190516020811015612a5157600080fd5b50515b612aa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613f72602d913960400191505060405180910390fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310612b2757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612aea565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612b89576040519150601f19603f3d011682016040523d82523d6000602084013e612b8e565b606091505b5050905080612be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613e766034913960400191505060405180910390fd5b505050565b6000808411612c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613f1f602b913960400191505060405180910390fd5b600083118015612c575750600082115b612cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f4a6028913960400191505060405180910390fd5b6000612cc0856103e563ffffffff613a7b16565b90506000612cd4828563ffffffff613a7b16565b90506000612cfa83612cee886103e863ffffffff613a7b16565b9063ffffffff613b0116565b9050808281612d0557fe5b04979650505050505050565b6060600282511015612d8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015612d9c57600080fd5b50604051908082528060200260200182016040528015612dc6578160200160208202803683370190505b5090508281600081518110612dd757fe5b60200260200101818152505060005b6001835103811015612e6f57600080612e2987868581518110612e0557fe5b6020026020010151878660010181518110612e1c57fe5b6020026020010151613b73565b91509150612e4b848481518110612e3c57fe5b60200260200101518383612bed565b848460010181518110612e5a57fe5b60209081029190910101525050600101612de6565b509392505050565b6000806000612e868585613627565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061304057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613003565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146130a2576040519150601f19603f3d011682016040523d82523d6000602084013e6130a7565b606091505b50915091508180156130d55750805115806130d557508080602001905160208110156130d257600080fd5b50515b61312a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613e456031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156133b35760008084838151811061315057fe5b602002602001015185846001018151811061316757fe5b602002602001015191509150600061317f8383613627565b509050600087856001018151811061319357fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146131db578260006131df565b6000835b91509150600060028a510388106131f65788613237565b6132377f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061322a57fe5b6020026020010151612e77565b90506132647f00000000000000000000000000000000000000000000000000000000000000008888612e77565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156132ae576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613339578181015183820152602001613321565b50505050905090810190601f1680156133665780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561338857600080fd5b505af115801561339c573d6000803e3d6000fd5b505060019099019850613135975050505050505050565b50505050565b606060028251101561342c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561344457600080fd5b5060405190808252806020026020018201604052801561346e578160200160208202803683370190505b509050828160018351038151811061348257fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b8015612e6f576000806134e2878660018603815181106134ce57fe5b6020026020010151878681518110612e1c57fe5b915091506135048484815181106134f557fe5b60200260200101518383613c5b565b84600185038151811061351357fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016134b2565b60008084116135a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613efa6025913960400191505060405180910390fd5b6000831180156135b15750600082115b613606576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f4a6028913960400191505060405180910390fd5b82613617858463ffffffff613a7b16565b8161361e57fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156136af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613ed56025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106136e95782846136ec565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff821661377357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b15801561381a57600080fd5b505afa15801561382e573d6000803e3d6000fd5b505050506040513d602081101561384457600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561392a57604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156138fd57600080fd5b505af1158015613911573d6000803e3d6000fd5b505050506040513d602081101561392757600080fd5b50505b6000806139587f00000000000000000000000000000000000000000000000000000000000000008b8b613b73565b9150915081600014801561396a575080155b1561397a57879350869250613a6e565b6000613987898484613547565b90508781116139f457858110156139e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613f9f6026913960400191505060405180910390fd5b889450925082613a6c565b6000613a01898486613547565b905089811115613a0d57fe5b87811015613a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613fc56026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000811580613a9657505080820282828281613a9357fe5b04145b61105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b6000806000613b828585613627565b509050600080613b93888888612e77565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613bd857600080fd5b505afa158015613bec573d6000803e3d6000fd5b505050506040513d6060811015613c0257600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff87811690841614613c49578082613c4c565b81815b90999098509650505050505050565b6000808411613cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613df2602c913960400191505060405180910390fd5b600083118015613cc55750600082115b613d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f4a6028913960400191505060405180910390fd5b6000613d3e6103e8613d32868863ffffffff613a7b16565b9063ffffffff613a7b16565b90506000613d586103e5613d32868963ffffffff613d7f16565b9050613d756001828481613d6857fe5b049063ffffffff613b0116565b9695505050505050565b8082038281111561105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fdfe4d61725844455856324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e544d6172584445585632526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534d61725844455856324c6962726172793a20494e53554646494349454e545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f425f414d4f554e544d6172584445585632526f757465723a20494e53554646494349454e545f415f414d4f554e54a26469706673582212201c5a383409ecdb562ca3da5e8d642e843b7c47eba96db5b435b897f7fa08c59864736f6c63430006060033",
      "bin-runtime": "6080604052600436106101485760003560e01c80638803dbee116100c0578063d06ca61f11610074578063e8e3370011610059578063e8e3370014610937578063f305d719146109c4578063fb3bdb4114610a175761018e565b8063d06ca61f14610800578063ded9382a146108b75761018e565b8063ad615dec116100a5578063ad615dec1461074b578063baa2abde14610781578063c45a0155146107eb5761018e565b80638803dbee14610668578063ad5c46481461070d5761018e565b80632195995c116101175780634a25d94a116100fc5780634a25d94a146105305780637ff36ab5146105d557806385f8c2591461020c5761018e565b80632195995c1461040057806338ed17391461048b5761018e565b806302751cec14610193578063054d50d41461020c57806318cbafe5146102545780631f00ca74146103495761018e565b3661018e573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461018c57fe5b005b600080fd5b34801561019f57600080fd5b506101f3600480360360c08110156101b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610aaa565b6040805192835260208301919091528051918290030190f35b34801561021857600080fd5b506102426004803603606081101561022f57600080fd5b5080359060208101359060400135610bfd565b60408051918252519081900360200190f35b34801561026057600080fd5b506102f9600480360360a081101561027757600080fd5b81359160208101359181019060608101604082013564010000000081111561029e57600080fd5b8201836020820111156102b057600080fd5b803590602001918460208302840111640100000000831117156102d257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c12565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561033557818101518382015260200161031d565b505050509050019250505060405180910390f35b34801561035557600080fd5b506102f96004803603604081101561036c57600080fd5b8135919081019060408101602082013564010000000081111561038e57600080fd5b8201836020820111156103a057600080fd5b803590602001918460208302840111640100000000831117156103c257600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061102a945050505050565b34801561040c57600080fd5b506101f3600480360361016081101561042457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611060565b34801561049757600080fd5b506102f9600480360360a08110156104ae57600080fd5b8135916020810135918101906060810160408201356401000000008111156104d557600080fd5b8201836020820111156104e757600080fd5b8035906020019184602083028401116401000000008311171561050957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561119e565b34801561053c57600080fd5b506102f9600480360360a081101561055357600080fd5b81359160208101359181019060608101604082013564010000000081111561057a57600080fd5b82018360208201111561058c57600080fd5b803590602001918460208302840111640100000000831117156105ae57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561132f565b6102f9600480360360808110156105eb57600080fd5b8135919081019060408101602082013564010000000081111561060d57600080fd5b82018360208201111561061f57600080fd5b8035906020019184602083028401116401000000008311171561064157600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611572565b34801561067457600080fd5b506102f9600480360360a081101561068b57600080fd5b8135916020810135918101906060810160408201356401000000008111156106b257600080fd5b8201836020820111156106c457600080fd5b803590602001918460208302840111640100000000831117156106e657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119bc565b34801561071957600080fd5b50610722611afb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561075757600080fd5b506102426004803603606081101561076e57600080fd5b5080359060208101359060400135611b1f565b34801561078d57600080fd5b506101f3600480360360e08110156107a457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135611b2c565b3480156107f757600080fd5b50610722611e36565b34801561080c57600080fd5b506102f96004803603604081101561082357600080fd5b8135919081019060408101602082013564010000000081111561084557600080fd5b82018360208201111561085757600080fd5b8035906020019184602083028401116401000000008311171561087957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611e5a945050505050565b3480156108c357600080fd5b506101f360048036036101408110156108db57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611e87565b34801561094357600080fd5b506109a6600480360361010081101561095b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135611fdf565b60408051938452602084019290925282820152519081900360600190f35b6109a6600480360360c08110156109da57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a0013561216e565b6102f960048036036080811015610a2d57600080fd5b81359190810190604081016020820135640100000000811115610a4f57600080fd5b820183602082011115610a6157600080fd5b80359060200191846020830284011164010000000083111715610a8357600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561249a565b6000808242811015610b1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610b4c897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a611b2c565b9093509150610b5c8986856128e9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b50505050610bf18583612ab0565b50965096945050505050565b6000610c0a848484612bed565b949350505050565b60608142811015610c8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610ce957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b610de67f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b91508682600184510381518110610df957fe5b60200260200101511015610e58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613eaa602b913960400191505060405180910390fd5b610f1d86866000818110610e6857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633610f037f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610eb757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b6001818110610ee157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16612e77565b85600081518110610f1057fe5b6020026020010151612f62565b610f5c82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613132915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d83600185510381518110610fa857fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610fe657600080fd5b505af1158015610ffa573d6000803e3d6000fd5b5050505061101f848360018551038151811061101257fe5b6020026020010151612ab0565b509695505050505050565b60606110577f000000000000000000000000000000000000000000000000000000000000000084846133b9565b90505b92915050565b60008060006110907f00000000000000000000000000000000000000000000000000000000000000008f8f612e77565b905060008761109f578c6110c1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561115d57600080fd5b505af1158015611171573d6000803e3d6000fd5b505050506111848f8f8f8f8f8f8f611b2c565b809450819550505050509b509b9950505050505050505050565b6060814281101561121057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61126e7f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b9150868260018451038151811061128157fe5b602002602001015110156112e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613eaa602b913960400191505060405180910390fd5b6112f086866000818110610e6857fe5b61101f82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613132915050565b606081428110156113a157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061140657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6115037f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133b992505050565b9150868260008151811061151357fe5b60200260200101511115610e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613e1e6027913960400191505060405180910390fd5b606081428110156115e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061162857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6117257f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b9150868260018451038151811061173857fe5b60200260200101511015611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613eaa602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836000815181106117e057fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561181357600080fd5b505af1158015611827573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6118c37f00000000000000000000000000000000000000000000000000000000000000008989600081811061189957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a6001818110610ee157fe5b846000815181106118d057fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561194157600080fd5b505af1158015611955573d6000803e3d6000fd5b505050506040513d602081101561196b57600080fd5b505161197357fe5b6119b282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613132915050565b5095945050505050565b60608142811015611a2e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611a8c7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133b992505050565b91508682600081518110611a9c57fe5b602002602001015111156112e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613e1e6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610c0a848484613547565b6000808242811015611b9f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000611bcc7f00000000000000000000000000000000000000000000000000000000000000008c8c612e77565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015611c4d57600080fd5b505af1158015611c61573d6000803e3d6000fd5b505050506040513d6020811015611c7757600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015611cea57600080fd5b505af1158015611cfe573d6000803e3d6000fd5b505050506040513d6040811015611d1457600080fd5b50805160209091015190925090506000611d2e8e8e613627565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614611d6b578183611d6e565b82825b90975095508a871015611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613fc56026913960400191505060405180910390fd5b89861015611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613f9f6026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606110577f00000000000000000000000000000000000000000000000000000000000000008484612d11565b6000806000611ed77f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000612e77565b9050600087611ee6578c611f08565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b158015611fa457600080fd5b505af1158015611fb8573d6000803e3d6000fd5b50505050611fca8e8e8e8e8e8e610aaa565b909f909e509c50505050505050505050505050565b6000806000834281101561205457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6120628c8c8c8c8c8c61377a565b909450925060006120947f00000000000000000000000000000000000000000000000000000000000000008e8e612e77565b90506120a28d338388612f62565b6120ae8c338387612f62565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561212d57600080fd5b505af1158015612141573d6000803e3d6000fd5b505050506040513d602081101561215757600080fd5b5051949d939c50939a509198505050505050505050565b600080600083428110156121e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6122118a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c61377a565b909450925060006122637f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000612e77565b90506122718b338388612f62565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156122d957600080fd5b505af11580156122ed573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561239957600080fd5b505af11580156123ad573d6000803e3d6000fd5b505050506040513d60208110156123c357600080fd5b50516123cb57fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561244a57600080fd5b505af115801561245e573d6000803e3d6000fd5b505050506040513d602081101561247457600080fd5b505192503484101561248c5761248c33853403612ab0565b505096509650969350505050565b6060814281101561250c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061255057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61264d7f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133b992505050565b9150348260008151811061265d57fe5b602002602001015111156126bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613e1e6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061270557fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561273857600080fd5b505af115801561274c573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6127be7f00000000000000000000000000000000000000000000000000000000000000008989600081811061189957fe5b846000815181106127cb57fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561283c57600080fd5b505af1158015612850573d6000803e3d6000fd5b505050506040513d602081101561286657600080fd5b505161286e57fe5b6128ad82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613132915050565b816000815181106128ba57fe5b60200260200101513411156119b2576119b233836000815181106128da57fe5b60200260200101513403612ab0565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b602083106129bf57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612982565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612a21576040519150601f19603f3d011682016040523d82523d6000602084013e612a26565b606091505b5091509150818015612a54575080511580612a545750808060200190516020811015612a5157600080fd5b50515b612aa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613f72602d913960400191505060405180910390fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310612b2757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612aea565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612b89576040519150601f19603f3d011682016040523d82523d6000602084013e612b8e565b606091505b5050905080612be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613e766034913960400191505060405180910390fd5b505050565b6000808411612c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613f1f602b913960400191505060405180910390fd5b600083118015612c575750600082115b612cac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f4a6028913960400191505060405180910390fd5b6000612cc0856103e563ffffffff613a7b16565b90506000612cd4828563ffffffff613a7b16565b90506000612cfa83612cee886103e863ffffffff613a7b16565b9063ffffffff613b0116565b9050808281612d0557fe5b04979650505050505050565b6060600282511015612d8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015612d9c57600080fd5b50604051908082528060200260200182016040528015612dc6578160200160208202803683370190505b5090508281600081518110612dd757fe5b60200260200101818152505060005b6001835103811015612e6f57600080612e2987868581518110612e0557fe5b6020026020010151878660010181518110612e1c57fe5b6020026020010151613b73565b91509150612e4b848481518110612e3c57fe5b60200260200101518383612bed565b848460010181518110612e5a57fe5b60209081029190910101525050600101612de6565b509392505050565b6000806000612e868585613627565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061304057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613003565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146130a2576040519150601f19603f3d011682016040523d82523d6000602084013e6130a7565b606091505b50915091508180156130d55750805115806130d557508080602001905160208110156130d257600080fd5b50515b61312a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613e456031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156133b35760008084838151811061315057fe5b602002602001015185846001018151811061316757fe5b602002602001015191509150600061317f8383613627565b509050600087856001018151811061319357fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146131db578260006131df565b6000835b91509150600060028a510388106131f65788613237565b6132377f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061322a57fe5b6020026020010151612e77565b90506132647f00000000000000000000000000000000000000000000000000000000000000008888612e77565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156132ae576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613339578181015183820152602001613321565b50505050905090810190601f1680156133665780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561338857600080fd5b505af115801561339c573d6000803e3d6000fd5b505060019099019850613135975050505050505050565b50505050565b606060028251101561342c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561344457600080fd5b5060405190808252806020026020018201604052801561346e578160200160208202803683370190505b509050828160018351038151811061348257fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b8015612e6f576000806134e2878660018603815181106134ce57fe5b6020026020010151878681518110612e1c57fe5b915091506135048484815181106134f557fe5b60200260200101518383613c5b565b84600185038151811061351357fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016134b2565b60008084116135a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613efa6025913960400191505060405180910390fd5b6000831180156135b15750600082115b613606576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f4a6028913960400191505060405180910390fd5b82613617858463ffffffff613a7b16565b8161361e57fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156136af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613ed56025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106136e95782846136ec565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff821661377357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b15801561381a57600080fd5b505afa15801561382e573d6000803e3d6000fd5b505050506040513d602081101561384457600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561392a57604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156138fd57600080fd5b505af1158015613911573d6000803e3d6000fd5b505050506040513d602081101561392757600080fd5b50505b6000806139587f00000000000000000000000000000000000000000000000000000000000000008b8b613b73565b9150915081600014801561396a575080155b1561397a57879350869250613a6e565b6000613987898484613547565b90508781116139f457858110156139e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613f9f6026913960400191505060405180910390fd5b889450925082613a6c565b6000613a01898486613547565b905089811115613a0d57fe5b87811015613a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613fc56026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000811580613a9657505080820282828281613a9357fe5b04145b61105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b6000806000613b828585613627565b509050600080613b93888888612e77565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613bd857600080fd5b505afa158015613bec573d6000803e3d6000fd5b505050506040513d6060811015613c0257600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff87811690841614613c49578082613c4c565b81815b90999098509650505050505050565b6000808411613cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180613df2602c913960400191505060405180910390fd5b600083118015613cc55750600082115b613d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f4a6028913960400191505060405180910390fd5b6000613d3e6103e8613d32868863ffffffff613a7b16565b9063ffffffff613a7b16565b90506000613d586103e5613d32868963ffffffff613d7f16565b9050613d756001828481613d6857fe5b049063ffffffff613b0116565b9695505050505050565b8082038281111561105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fdfe4d61725844455856324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e544d6172584445585632526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534d61725844455856324c6962726172793a20494e53554646494349454e545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f425f414d4f554e544d6172584445585632526f757465723a20494e53554646494349454e545f415f414d4f554e54a26469706673582212201c5a383409ecdb562ca3da5e8d642e843b7c47eba96db5b435b897f7fa08c59864736f6c63430006060033",
      "srcmap": "335:12388:7:-:0;;;611:109;5:9:-1;2:2;;;27:1;24;17:12;2:2;611:109:7;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;611:109:7;;;;;;;-1:-1:-1;;;;;;673:18:7;;;;;;;;701:12;;;;;335:12388;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "335:12388:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;770:10;:18;784:4;770:18;;763:26;;;;335:12388;;12:1:-1;9;2:12;4788:645:7;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4788:645:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;4788:645:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11913:202;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11913:202:7;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11913:202:7;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10152:796;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10152:796:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;10152:796:7;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;10152:796:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;10152:796:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10152:796:7;;-1:-1:-1;10152:796:7;-1:-1:-1;10152:796:7;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10152:796:7;;;;;;;;;;;;;;;;;12528:193;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12528:193:7;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;12528:193:7;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;12528:193:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;12528:193:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;12528:193:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;12528:193:7;;-1:-1:-1;12528:193:7;;-1:-1:-1;;;;;12528:193:7:i;5438:655::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5438:655:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;5438:655:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7543:585::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7543:585:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;7543:585:7;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;7543:585:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;7543:585:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;7543:585:7;;-1:-1:-1;7543:585:7;-1:-1:-1;7543:585:7;;;;;;;;;:::i;9373:774::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9373:774:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;9373:774:7;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;9373:774:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;9373:774:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9373:774:7;;-1:-1:-1;9373:774:7;-1:-1:-1;9373:774:7;;;;;;;;;:::i;8701:667::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;8701:667:7;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;8701:667:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;8701:667:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8701:667:7;;-1:-1:-1;8701:667:7;-1:-1:-1;8701:667:7;;;;;;;;;:::i;8133:563::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8133:563:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;8133:563:7;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;8133:563:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;8133:563:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8133:563:7;;-1:-1:-1;8133:563:7;-1:-1:-1;8133:563:7;;;;;;;;;:::i;437:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;437:38:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11729:178;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11729:178:7;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11729:178:7;;;;;;;;;;;;:::i;3942:841::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3942:841:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;3942:841:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;390:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;390:41:7;;;:::i;12329:193::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12329:193:7;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;12329:193:7;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;12329:193:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;12329:193:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;12329:193:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;12329:193:7;;-1:-1:-1;12329:193:7;;-1:-1:-1;;;;;12329:193:7:i;6098:648::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6098:648:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;6098:648:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2247:715::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2247:715:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;2247:715:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;2967:935;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;2967:935:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10953:770::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;10953:770:7;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;10953:770:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;10953:770:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10953:770:7;;-1:-1:-1;10953:770:7;-1:-1:-1;10953:770:7;;;;;;;;;:::i;4788:645::-;5010:16;5028:14;4991:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5081:188:::1;5110:5;5129:4;5147:9;5170:14;5198:12;5232:4;5251:8;5081:15;:188::i;:::-;5054:215:::0;;-1:-1:-1;5054:215:7;-1:-1:-1;5279:51:7::1;5307:5:::0;5314:2;5054:215;5279:27:::1;:51::i;:::-;5346:4;5340:20;;;5361:9;5340:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;5340:31:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;5340:31:7;;;;5381:45;5412:2;5416:9;5381:30;:45::i;:::-;4788:645:::0;;;;;;;;;;:::o;11913:202::-;12013:14;12046:62;12076:8;12086:9;12097:10;12046:29;:62::i;:::-;12039:69;11913:202;-1:-1:-1;;;;11913:202:7:o;10152:796::-;10345:21;10318:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10390:29:::1;10415:4;10390:29;:4:::0;;10395:15;;;10390:21;;::::1;;;;;;;;;;;;;:29;;;10382:71;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10473:55;10504:7;10513:8;10523:4;;10473:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;10473:30:7::1;::::0;-1:-1:-1;;;10473:55:7:i:1;:::-;10463:65;;10577:12;10546:7;10571:1;10554:7;:14;:18;10546:27;;;;;;;;;;;;;;:43;;10538:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10647:117;10679:4;;10684:1;10679:7;;;;;;;;;;;;;;;10688:10;10700:51;10725:7;10734:4;;10739:1;10734:7;;;;;;;;;;;;;;;10743:4;;10748:1;10743:7;;;;;;;;;;;;;;;10700:24;:51::i;:::-;10753:7;10761:1;10753:10;;;;;;;;;;;;;;10647:31;:117::i;:::-;10774:35;10780:7;10789:4;;10774:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;10803:4:7::1;::::0;-1:-1:-1;10774:5:7::1;::::0;-1:-1:-1;;10774:35:7:i:1;:::-;10825:4;10819:20;;;10840:7;10865:1;10848:7;:14;:18;10840:27;;;;;;;;;;;;;;10819:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;10819:49:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;10819:49:7;;;;10878:63;10909:2;10913:7;10938:1;10921:7;:14;:18;10913:27;;;;;;;;;;;;;;10878:30;:63::i;:::-;10152:796:::0;;;;;;;;;:::o;12528:193::-;12619:21;12659:55;12689:7;12698:9;12709:4;12659:29;:55::i;:::-;12652:62;;12528:193;;;;;:::o;5438:655::-;5727:12;5741;5765;5780:49;5805:7;5814:6;5822;5780:24;:49::i;:::-;5765:64;;5839:10;5852;:33;;5876:9;5852:33;;;5870:2;5852:33;5895:80;;;;;;5923:10;5895:80;;;;5943:4;5895:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5839:46;;-1:-1:-1;5895:27:7;;;;;;:80;;;;;-1:-1:-1;;5895:80:7;;;;;;;;-1:-1:-1;5895:27:7;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;5895:80:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5895:80:7;;;;6006;6022:6;6030;6038:9;6049:10;6061;6073:2;6077:8;6006:15;:80::i;:::-;5985:101;;;;;;;;5438:655;;;;;;;;;;;;;;;;:::o;7543:585::-;7753:21;7734:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7796:55:::1;7827:7;7836:8;7846:4;;7796:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;7796:30:7::1;::::0;-1:-1:-1;;;7796:55:7:i:1;:::-;7786:65;;7900:12;7869:7;7894:1;7877:7;:14;:18;7869:27;;;;;;;;;;;;;;:43;;7861:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7970:117;8002:4;;8007:1;8002:7;;;;;;7970:117;8097:24;8103:7;8112:4;;8097:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;8118:2:7;;-1:-1:-1;8097:5:7::1;::::0;-1:-1:-1;;8097:24:7:i:1;9373:774::-:0;9566:21;9539:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9611:29:::1;9636:4;9611:29;:4:::0;;9616:15;;;9611:21;;::::1;;;;;;;;;;;;;:29;;;9603:71;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;9694:55;9724:7;9733:9;9744:4;;9694:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;9694:29:7::1;::::0;-1:-1:-1;;;9694:55:7:i:1;:::-;9684:65;;9781:11;9767:7;9775:1;9767:10;;;;;;;;;;;;;;:25;;9759:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8701:667:::0;8895:21;8868:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8951:4:::1;8940:15;;:4;;8945:1;8940:7;;;;;;;;;;;;;;;:15;;;8932:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;9009:56;9040:7;9049:9;9060:4;;9009:56;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;9009:30:7::1;::::0;-1:-1:-1;;;9009:56:7:i:1;:::-;8999:66;;9114:12;9083:7;9108:1;9091:7;:14;:18;9083:27;;;;;;;;;;;;;;:43;;9075:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9190:4;9184:19;;;9211:7;9219:1;9211:10;;;;;;;;;;;;;;9184:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;9184:40:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;9184:40:7;;;;;9247:4;9241:20;;;9262:51;9287:7;9296:4;;9301:1;9296:7;;;;;;;;;;;;;;;9305:4;;9310:1;9305:7;;;;;;9262:51;9315:7;9323:1;9315:10;;;;;;;;;;;;;;9241:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;9241:85:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;9241:85:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;9241:85:7;9234:93:::1;;;;9337:24;9343:7;9352:4;;9337:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;9358:2:7;;-1:-1:-1;9337:5:7::1;::::0;-1:-1:-1;;9337:24:7:i:1;:::-;8701:667:::0;;;;;;;;:::o;8133:563::-;8343:21;8324:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8386:55:::1;8416:7;8425:9;8436:4;;8386:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;8386:29:7::1;::::0;-1:-1:-1;;;8386:55:7:i:1;:::-;8376:65;;8473:11;8459:7;8467:1;8459:10;;;;;;;;;;;;;;:25;;8451:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;437:38:::0;;;:::o;11729:178::-;11818:12;11849:51;11872:7;11881:8;11891;11849:22;:51::i;3942:841::-;4180:12;4194;4161:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4218:12:::1;4233:49;4258:7;4267:6;4275;4233:24;:49::i;:::-;4292:62;::::0;;;;;4326:10:::1;4292:62;::::0;::::1;::::0;:33:::1;::::0;::::1;:62:::0;;;;;;;;;;;;;;4218:64;;-1:-1:-1;4292:33:7;;::::1;::::0;:62;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;4292:33:7;:62;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;4292:62:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4292:62:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;4421:29:7::1;::::0;;;;;:25:::1;:29:::0;;::::1;;::::0;::::1;::::0;;;4391:12:::1;::::0;;;4421:25;;::::1;::::0;::::1;::::0;:29;;;;;;;;;;;4391:12;4421:25;:29;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;4421:29:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4421:29:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;4421:29:7;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;4421:29:7;-1:-1:-1;4461:14:7::1;4480:43;4508:6:::0;4516;4480:27:::1;:43::i;:::-;4460:63;;;4564:6;4554:16;;:6;:16;;;:58;;4595:7;4604;4554:58;;;4574:7;4583;4554:58;4533:79:::0;;-1:-1:-1;4533:79:7;-1:-1:-1;4630:21:7;;::::1;;4622:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4723:10;4712:7;:21;;4704:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;597:1;;;;3942:841:::0;;;;;;;;;;;:::o;390:41::-;;;:::o;12329:193::-;12420:21;12460:55;12491:7;12500:8;12510:4;12460:30;:55::i;6098:648::-;6371:16;6389:14;6415:12;6430:46;6455:7;6464:5;6471:4;6430:24;:46::i;:::-;6415:61;;6486:10;6499;:33;;6523:9;6499:33;;;6517:2;6499:33;6542:80;;;;;;6570:10;6542:80;;;;6590:4;6542:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6486:46;;-1:-1:-1;6542:27:7;;;;;;:80;;;;;-1:-1:-1;;6542:80:7;;;;;;;;-1:-1:-1;6542:27:7;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;6542:80:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6542:80:7;;;;6659;6678:5;6685:9;6696:14;6712:12;6726:2;6730:8;6659:18;:80::i;:::-;6632:107;;;;-1:-1:-1;6098:648:7;-1:-1:-1;;;;;;;;;;;;;6098:648:7:o;2247:715::-;2518:12;2532;2546:14;2499:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2593:85:::1;2607:6;2615;2623:14;2639;2655:10;2667;2593:13;:85::i;:::-;2572:106:::0;;-1:-1:-1;2572:106:7;-1:-1:-1;2688:12:7::1;2703:49;2728:7;2737:6:::0;2745;2703:24:::1;:49::i;:::-;2688:64;;2762:66;2794:6;2802:10;2814:4;2820:7;2762:31;:66::i;:::-;2838;2870:6;2878:10;2890:4;2896:7;2838:31;:66::i;:::-;2941:4;2926:25;;;2952:2;2926:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;2926:29:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;2926:29:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;2926:29:7;2247:715;;;;-1:-1:-1;2926:29:7;;-1:-1:-1;2247:715:7;;-1:-1:-1;;;;;;;;;2247:715:7:o;2967:935::-;3205:16;3223:14;3239;3186:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3292:169:::1;3319:5;3338:4;3356:18;3388:9;3411:14;3439:12;3292:13;:169::i;:::-;3265:196:::0;;-1:-1:-1;3265:196:7;-1:-1:-1;3471:12:7::1;3486:46;3511:7;3520:5:::0;3527:4:::1;3486:24;:46::i;:::-;3471:61;;3542:69;3574:5;3581:10;3593:4;3599:11;3542:31;:69::i;:::-;3627:4;3621:19;;;3648:9;3621:39;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3621:39:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3621:39:7;;;;;3683:4;3677:20;;;3698:4;3704:9;3677:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3677:37:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3677:37:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3677:37:7;3670:45:::1;;;;3752:4;3737:25;;;3763:2;3737:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3737:29:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3737:29:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3737:29:7;;-1:-1:-1;3780:9:7::1;:21:::0;-1:-1:-1;3776:92:7::1;;;3803:65;3834:10;3858:9;3846;:21;3803:30;:65::i;:::-;597:1;2967:935:::0;;;;;;;;;;;:::o;10953:770::-;11144:21;11117:8;543:15;531:8;:27;;523:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11200:4:::1;11189:15;;:4;;11194:1;11189:7;;;;;;;;;;;;;;;:15;;;11181:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;11258:55;11288:7;11297:9;11308:4;;11258:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11258:29:7::1;::::0;-1:-1:-1;;;11258:55:7:i:1;:::-;11248:65;;11345:9;11331:7;11339:1;11331:10;;;;;;;;;;;;;;:23;;11323:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11414:4;11408:19;;;11435:7;11443:1;11435:10;;;;;;;;;;;;;;11408:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;11408:40:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;11408:40:7;;;;;11471:4;11465:20;;;11486:51;11511:7;11520:4;;11525:1;11520:7;;;;;;11486:51;11539:7;11547:1;11539:10;;;;;;;;;;;;;;11465:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;11465:85:7;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;11465:85:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;11465:85:7;11458:93:::1;;;;11561:24;11567:7;11576:4;;11561:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11582:2:7;;-1:-1:-1;11561:5:7::1;::::0;-1:-1:-1;;11561:24:7:i:1;:::-;11611:7;11619:1;11611:10;;;;;;;;;;;;;;11599:9;:22;11595:94;;;11623:66;11654:10;11678:7;11686:1;11678:10;;;;;;;;;;;;;;11666:9;:22;11623:30;:66::i;652:438:4:-:0;878:45;;;867:10;878:45;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;878:45:4;;;;;;;25:18:-1;;61:17;;96:58;182:15;878:45:4;179:29:-1;160:49;;867:57:4;;;;832:12;;846:17;;867:10;;;;878:45;867:57;;;25:18:-1;867:57:4;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;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:4;;;;;;;;;;;;;;;;;;;;;;;;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:4;;;;955:7;:57;;;;-1:-1:-1;967:11:4;;: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:4;967:44;934:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:438;;;;;:::o;1588:214::-;1700:12;;;1660;1700;;;;;;;;;1678:7;;;;1693:5;;1678:35;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;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:4;;;;;;;;;;;;;;;;;;;;;;;;;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:4;;;1731:7;1723:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1588:214;;;:::o;2183:510:17:-;2276:14;2321:1;2310:8;:12;2302:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2400:1;2388:9;:13;:31;;;;;2418:1;2405:10;:14;2388:31;2380:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2474:20;2497:17;:8;2510:3;2497:17;:12;:17;:::i;:::-;2474:40;-1:-1:-1;2524:14:17;2541:31;2474:40;2561:10;2541:31;:19;:31;:::i;:::-;2524:48;-1:-1:-1;2582:16:17;2601:40;2625:15;2601:19;:9;2615:4;2601:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;2582:59;;2675:11;2663:9;:23;;;;;;;2183:510;-1:-1:-1;;;;;;;2183:510:17:o;3356:503::-;3457:21;3513:1;3498:4;:11;:16;;3490:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3580:4;:11;3569:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3569:23:17;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;3569:23:17;;3559:33;;3615:8;3602:7;3610:1;3602:10;;;;;;;;;;;;;:21;;;;;3638:6;3633:220;3664:1;3650:4;:11;:15;3646:1;:19;3633:220;;;3687:14;3703:15;3722:42;3734:7;3743:4;3748:1;3743:7;;;;;;;;;;;;;;3752:4;3757:1;3761;3757:5;3752:11;;;;;;;;;;;;;;3722;:42::i;:::-;3686:78;;;;3795:47;3808:7;3816:1;3808:10;;;;;;;;;;;;;;3820:9;3831:10;3795:12;:47::i;:::-;3778:7;3786:1;3790;3786:5;3778:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;3667:3:17;;3633:220;;;;3356:503;;;;;:::o;725:470::-;814:12;839:14;855;873:26;884:6;892;873:10;:26::i;:::-;1033:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1033:32:17;;;;;1023:43;;;;;;939:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;939:246:17;;;;;;;929:257;;;;;;;;;725:470;-1:-1:-1;;;;;725:470:17:o;1096:486:4:-;1360:51;;;1349:10;1360:51;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1360:51:4;;;;;;;25:18:-1;;61:17;;96:58;182:15;1360:51:4;179:29:-1;160:49;;1349:63:4;;;;1314:12;;1328:17;;1349:10;;;;1360:51;1349:63;;;25:18:-1;1349:63:4;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;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;;;1349:63:4;;;;;;;;;;;;;;;;;;;;;;;;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;;1313:99:4;;;;1443:7;:57;;;;-1:-1:-1;1455:11:4;;:16;;:44;;;1486:4;1475:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1475:24:4;1455:44;1422:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1096:486;;;;;;:::o;6853:685:7:-;6950:6;6945:587;6976:1;6962:4;:11;:15;6958:1;:19;6945:587;;;6999:13;7014:14;7033:4;7038:1;7033:7;;;;;;;;;;;;;;7042:4;7047:1;7051;7047:5;7042:11;;;;;;;;;;;;;;6998:56;;;;7069:14;7088:42;7116:5;7123:6;7088:27;:42::i;:::-;7068:62;;;7144:14;7161:7;7169:1;7173;7169:5;7161:14;;;;;;;;;;;;;;7144:31;;7190:15;7207;7235:6;7226:15;;:5;:15;;;:61;;7268:9;7284:1;7226:61;;;7250:1;7254:9;7226:61;7189:98;;;;7301:10;7332:1;7318:4;:11;:15;7314:1;:19;:82;;7393:3;7314:82;;;7336:54;7361:7;7370:6;7378:4;7383:1;7387;7383:5;7378:11;;;;;;;;;;;;;;7336:24;:54::i;:::-;7301:95;;7425:48;7450:7;7459:5;7466:6;7425:24;:48::i;:::-;7410:69;;;7480:10;7492;7504:2;7518:1;7508:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;7508:12:7;87:42:-1;143:17;;-1:-1;7508:12:7;;7410:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7410:111:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7410:111:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;6979:3:7;;;;;-1:-1:-1;6945:587:7;;-1:-1:-1;;;;;;;;6945:587:7;;;6853:685;;;:::o;3937:524:17:-;4038:21;4094:1;4079:4;:11;:16;;4071:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4161:4;:11;4150:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4150:23:17;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;4150:23:17;;4140:33;;4213:9;4183:7;4208:1;4191:7;:14;:18;4183:27;;;;;;;;;;;;;;;;;:39;4246:11;;:15;;4232:223;4263:5;;4232:223;;4290:14;4306:15;4325:42;4337:7;4346:4;4355:1;4351;:5;4346:11;;;;;;;;;;;;;;4359:4;4364:1;4359:7;;;;;;;4325:42;4289:78;;;;4398:46;4410:7;4418:1;4410:10;;;;;;;;;;;;;;4422:9;4433:10;4398:11;:46::i;:::-;4381:7;4393:1;4389;:5;4381:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;4270:3:17;;4232:223;;1747:317;1829:12;1871:1;1861:7;:11;1853:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1943:1;1932:8;:12;:28;;;;;1959:1;1948:8;:12;1932:28;1924:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2049:8;2025:21;:7;2037:8;2025:21;:11;:21;:::i;:::-;:32;;;;;;;1747:317;-1:-1:-1;;;;1747:317:17:o;291:345::-;366:14;382;426:6;416:16;;:6;:16;;;;408:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:6;503:15;;:6;:15;;;:53;;541:6;549;503:53;;;522:6;530;503:53;484:72;;-1:-1:-1;484:72:17;-1:-1:-1;574:20:17;;;566:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:345;;;;;:::o;888:1354:7:-;1183:50;;;;;;:64;:50;;;;;;;;;;;;;;;;1090:12;;;;;;1201:7;1183:34;;;;;;:50;;;;;;;;;;;;;;;:34;:50;;;2:2:-1;;;;27:1;24;17:12;2:2;1183:50:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1183:50:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1183:50:7;:64;;;1179:148;;;1263:53;;;;;;:37;:53;;;;;;;;;;;;;;;;1281:7;1263:37;;;;;;:53;;;;;;;;;;;;;;;-1:-1:-1;1263:37:7;:53;;;2:2:-1;;;;27:1;24;17:12;2:2;1263:53:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1263:53:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;1179:148:7;1337:13;1352;1369:53;1398:7;1407:6;1415;1369:28;:53::i;:::-;1336:86;;;;1436:8;1448:1;1436:13;:30;;;;-1:-1:-1;1453:13:7;;1436:30;1432:804;;;1504:14;;-1:-1:-1;1520:14:7;;-1:-1:-1;1432:804:7;;;1566:19;1588:58;1611:14;1627:8;1637;1588:22;:58::i;:::-;1566:80;;1682:14;1664;:32;1660:566;;1742:10;1724:14;:28;;1716:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1835:14;;-1:-1:-1;1851:14:7;-1:-1:-1;1851:14:7;1660:566;;;1905:19;1927:58;1950:14;1966:8;1976;1927:22;:58::i;:::-;1905:80;;2028:14;2010;:32;;2003:40;;;;2087:10;2069:14;:28;;2061:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:14;-1:-1:-1;2196:14:7;;-1:-1:-1;1660:566:7;1432:804;;888:1354;;;;;;;;;;;:::o;419:140:20:-;471:6;497;;;:30;;-1:-1:-1;;512:5:20;;;526:1;521;512:5;521:1;507:15;;;;;:20;497:30;489:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;154:126;237:5;;;232:16;;;;224:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1250:387:17;1343:13;1358;1384:14;1403:26;1414:6;1422;1403:10;:26::i;:::-;1383:46;;;1440:13;1455;1488:32;1496:7;1505:6;1513;1488:7;:32::i;:::-;1473:60;;;:62;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1473:62:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1473:62:17;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1473:62:17;;;;;;;1439:96;;;;;-1:-1:-1;1439:96:17;;-1:-1:-1;1568:16:17;;;;;;;;:62;;1611:8;1621;1568:62;;;1588:8;1598;1568:62;1545:85;;;;-1:-1:-1;1250:387:17;-1:-1:-1;;;;;;;1250:387:17:o;2811:466::-;2904:13;2949:1;2937:9;:13;2929:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3029:1;3017:9;:13;:31;;;;;3047:1;3034:10;:14;3017:31;3009:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3103:14;3120:34;3149:4;3120:24;:9;3134;3120:24;:13;:24;:::i;:::-;:28;:34;:28;:34;:::i;:::-;3103:51;-1:-1:-1;3164:16:17;3183:34;3213:3;3183:25;:10;3198:9;3183:25;:14;:25;:::i;:34::-;3164:53;;3238:32;3268:1;3251:11;3239:9;:23;;;;;;;3238:32;:29;:32;:::i;:::-;3227:43;2811:466;-1:-1:-1;;;;;;2811:466:17:o;286:127:20:-;369:5;;;364:16;;;;356:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
    },
    "contracts/MarXDEXV2Router02.sol:MarXDEXV2Router02": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_factory",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_WETH",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "WETH",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountADesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenDesired",
              "type": "uint256"
            },
            {
              "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": "addLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountIn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountOut",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsIn",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsOut",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveB",
              "type": "uint256"
            }
          ],
          "name": "quote",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "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": "removeLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "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": "removeLiquidityETHSupportingFeeOnTransferTokens",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapETHForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokensSupportingFeeOnTransferTokens",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETHSupportingFeeOnTransferTokens",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60c06040523480156200001157600080fd5b506040516200577338038062005773833981810160405260408110156200003757600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c6155ec62000187600039806101ac5280610e5d5280610e985280610fd5528061129852806116f252806118d65280611e1e5280611fa252806120725280612179528061232c52806123c15280612673528061271a52806127ef52806128f452806129dc5280612a5d52806130ec5280613422528061347852806134ac528061352d528061374752806138f7528061398c5250806110c752806111c5528061136b52806113a4528061154f52806117e452806118b45280611aa1528061225f528061240052806125a95280612a9c5280612ddf5280613071528061309a52806130ca52806132a75280613456528061382d52806139cb5280614434528061447752806147d752806149b85280614f335280615014528061509452506155ec6000f3fe60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4c565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611364945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139a565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114d8565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611669565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ac565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119fe565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d97565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612105565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612525565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612532565b34801561096057600080fd5b50610969612671565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612695565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a2565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612882565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d65565b348015610b3157600080fd5b5061096961306f565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613093945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c0565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613218565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a7565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d3565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610e86897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d65565b9093509150610e96898685613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613ce9565b50965096945050505050565b6000610f44848484613e26565b949350505050565b60608142811015610fbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6111207f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4a92505050565b9150868260018451038151811061113357fe5b60200260200101511015611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b611257868660008181106111a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123d7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111f157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140b0565b8560008151811061124a57fe5b602002602001015161419b565b6112968287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061436b915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132057600080fd5b505af1158015611334573d6000803e3d6000fd5b50505050611359848360018551038151811061134c57fe5b6020026020010151613ce9565b509695505050505050565b60606113917f000000000000000000000000000000000000000000000000000000000000000084846145f2565b90505b92915050565b60008060006113ca7f00000000000000000000000000000000000000000000000000000000000000008f8f6140b0565b90506000876113d9578c6113fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149757600080fd5b505af11580156114ab573d6000803e3d6000fd5b505050506114be8f8f8f8f8f8f8f612d65565b809450819550505050509b509b9950505050505050505050565b6060814281101561154a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6115a87f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4a92505050565b915086826001845103815181106115bb57fe5b6020026020010151101561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b61162a868660008181106111a257fe5b6113598287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061436b915050565b606081428110156116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61183d7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f292505050565b9150868260008151811061184d57fe5b60200260200101511115611192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806153ea6027913960400191505060405180910390fd5b6000806118fa7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006140b0565b9050600086611909578b61192b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b505050506119ed8d8d8d8d8d8d6126a2565b9d9c50505050505050505050505050565b8042811015611a6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611afd85856000818110611a7e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121b57fe5b8a61419b565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d6020811015611bf057600080fd5b50516040805160208881028281018201909352888252929350611c32929091899189918291850190849080828437600092019190915250889250614780915050565b86611d368288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d6020811015611d2857600080fd5b50519063ffffffff614b1316565b1015611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b5050505050505050565b8042811015611e0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b611f1b85856000818110611a7e57fe5b611f59858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614780915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611fe957600080fd5b505afa158015611ffd573d6000803e3d6000fd5b505050506040513d602081101561201357600080fd5b5051905086811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050611d8d8482613ce9565b6060814281101561217757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106121bb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6122b87f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4a92505050565b915086826001845103815181106122cb57fe5b6020026020010151101561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237357fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af11580156123ba573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b8460008151811061243957fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d60208110156124d457600080fd5b50516124dc57fe5b61251b8287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061436b915050565b5095945050505050565b6000610f44848484614b85565b606081428110156125a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6126027f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f292505050565b9150868260008151811061261257fe5b6020026020010151111561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806153ea6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f44848484614ca9565b6000814281101561271457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b612743887f00000000000000000000000000000000000000000000000000000000000000008989893089612d65565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ed92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127bc57600080fd5b505afa1580156127d0573d6000803e3d6000fd5b505050506040513d60208110156127e657600080fd5b5051613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506113598483613ce9565b80428110156128f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061293657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4257600080fd5b505af1158015612a56573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ac87f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050506040513d6020811015612b5c57600080fd5b5051612b6457fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2d57600080fd5b505afa158015612c41573d6000803e3d6000fd5b505050506040513d6020811015612c5757600080fd5b50516040805160208981028281018201909352898252929350612c999290918a918a918291850190849080828437600092019190915250899250614780915050565b87611d368289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612ccc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b6000808242811015612dd857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000612e057f00000000000000000000000000000000000000000000000000000000000000008c8c6140b0565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050506040513d6020811015612eb057600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6040811015612f4d57600080fd5b50805160209091015190925090506000612f678e8e614d89565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa4578183612fa7565b82825b90975095508a871015613005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806155916026913960400191505060405180910390fd5b8986101561305e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061556b6026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484613f4a565b60008060006131107f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006140b0565b905060008761311f578c613141565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050506132038e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61329b8c8c8c8c8c8c614edc565b909450925060006132cd7f00000000000000000000000000000000000000000000000000000000000000008e8e6140b0565b90506132db8d33838861419b565b6132e78c33838761419b565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336657600080fd5b505af115801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61344a8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614edc565b9094509250600061349c7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006140b0565b90506134aa8b33838861419b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351257600080fd5b505af1158015613526573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d257600080fd5b505af11580156135e6573d6000803e3d6000fd5b505050506040513d60208110156135fc57600080fd5b505161360457fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b50519250348410156136c5576136c533853403613ce9565b505096509650969350505050565b6060814281101561374557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061378957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6138867f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f292505050565b9150348260008151811061389657fe5b602002602001015111156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806153ea6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061393e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b84600081518110613a0457fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7557600080fd5b505af1158015613a89573d6000803e3d6000fd5b505050506040513d6020811015613a9f57600080fd5b5051613aa757fe5b613ae68287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061436b915050565b81600081518110613af357fe5b602002602001015134111561251b5761251b3383600081518110613b1357fe5b60200260200101513403613ce9565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bf857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5a576040519150601f19603f3d011682016040523d82523d6000602084013e613c5f565b606091505b5091509150818015613c8d575080511580613c8d5750808060200190516020811015613c8a57600080fd5b50515b613ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061553e602d913960400191505060405180910390fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d6057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d23565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dc2576040519150601f19603f3d011682016040523d82523d6000602084013e613dc7565b606091505b5050905080613e21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806154426034913960400191505060405180910390fd5b505050565b6000808411613e80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806154eb602b913960400191505060405180910390fd5b600083118015613e905750600082115b613ee5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806155166028913960400191505060405180910390fd5b6000613ef9856103e563ffffffff6151dd16565b90506000613f0d828563ffffffff6151dd16565b90506000613f3383613f27886103e863ffffffff6151dd16565b9063ffffffff61526316565b9050808281613f3e57fe5b04979650505050505050565b6060600282511015613fbd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613fd557600080fd5b50604051908082528060200260200182016040528015613fff578160200160208202803683370190505b509050828160008151811061401057fe5b60200260200101818152505060005b60018351038110156140a8576000806140628786858151811061403e57fe5b602002602001015187866001018151811061405557fe5b60200260200101516152d5565b9150915061408484848151811061407557fe5b60200260200101518383613e26565b84846001018151811061409357fe5b6020908102919091010152505060010161401f565b509392505050565b60008060006140bf8585614d89565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061427957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161423c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142db576040519150601f19603f3d011682016040523d82523d6000602084013e6142e0565b606091505b509150915081801561430e57508051158061430e575080806020019051602081101561430b57600080fd5b50515b614363576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806154116031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156145ec5760008084838151811061438957fe5b60200260200101518584600101815181106143a057fe5b60200260200101519150915060006143b88383614d89565b50905060008785600101815181106143cc57fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461441457826000614418565b6000835b91509150600060028a5103881061442f5788614470565b6144707f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061446357fe5b60200260200101516140b0565b905061449d7f000000000000000000000000000000000000000000000000000000000000000088886140b0565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156144e7576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561457257818101518382015260200161455a565b50505050905090810190601f16801561459f5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156145c157600080fd5b505af11580156145d5573d6000803e3d6000fd5b50506001909901985061436e975050505050505050565b50505050565b606060028251101561466557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561467d57600080fd5b506040519080825280602002602001820160405280156146a7578160200160208202803683370190505b50905082816001835103815181106146bb57fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140a85760008061471b8786600186038151811061470757fe5b602002602001015187868151811061405557fe5b9150915061473d84848151811061472e57fe5b60200260200101518383614b85565b84600185038151811061474c57fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016146eb565b60005b6001835103811015613e215760008084838151811061479e57fe5b60200260200101518584600101815181106147b557fe5b60200260200101519150915060006147cd8383614d89565b50905060006147fd7f000000000000000000000000000000000000000000000000000000000000000085856140b0565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561484b57600080fd5b505afa15801561485f573d6000803e3d6000fd5b505050506040513d606081101561487557600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a8116908916146148bf5782846148c2565b83835b91509150614947828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b9550614954868383613e26565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149985782600061499c565b6000835b91509150600060028c51038a106149b3578a6149e7565b6149e77f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061446357fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614a97578181015183820152602001614a7f565b50505050905090810190601f168015614ac45780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614ae657600080fd5b505af1158015614afa573d6000803e3d6000fd5b50506001909b019a506147839950505050505050505050565b8082038281111561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614bdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806153be602c913960400191505060405180910390fd5b600083118015614bef5750600082115b614c44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806155166028913960400191505060405180910390fd5b6000614c686103e8614c5c868863ffffffff6151dd16565b9063ffffffff6151dd16565b90506000614c826103e5614c5c868963ffffffff614b1316565b9050614c9f6001828481614c9257fe5b049063ffffffff61526316565b9695505050505050565b6000808411614d03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154c66025913960400191505060405180910390fd5b600083118015614d135750600082115b614d68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806155166028913960400191505060405180910390fd5b82614d79858463ffffffff6151dd16565b81614d8057fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154a16025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614e4b578284614e4e565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614ed557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614f7c57600080fd5b505afa158015614f90573d6000803e3d6000fd5b505050506040513d6020811015614fa657600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561508c57604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b15801561505f57600080fd5b505af1158015615073573d6000803e3d6000fd5b505050506040513d602081101561508957600080fd5b50505b6000806150ba7f00000000000000000000000000000000000000000000000000000000000000008b8b6152d5565b915091508160001480156150cc575080155b156150dc578793508692506151d0565b60006150e9898484614ca9565b9050878111615156578581101561514b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061556b6026913960400191505060405180910390fd5b8894509250826151ce565b6000615163898486614ca9565b90508981111561516f57fe5b878110156151c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806155916026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b60008115806151f8575050808202828282816151f557fe5b04145b61139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006152e48585614d89565b5090506000806152f58888886140b0565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561533a57600080fd5b505afa15801561534e573d6000803e3d6000fd5b505050506040513d606081101561536457600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146153ab5780826153ae565b81815b9099909850965050505050505056fe4d61725844455856324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e544d6172584445585632526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534d61725844455856324c6962726172793a20494e53554646494349454e545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f425f414d4f554e544d6172584445585632526f757465723a20494e53554646494349454e545f415f414d4f554e54a2646970667358221220919085a70d99660138771c57d3468b71da65e6809fd0a21268d74247dd9d5be064736f6c63430006060033",
          "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x5773 CODESIZE SUB DUP1 PUSH3 0x5773 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x55EC PUSH3 0x187 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1AC MSTORE DUP1 PUSH2 0xE5D MSTORE DUP1 PUSH2 0xE98 MSTORE DUP1 PUSH2 0xFD5 MSTORE DUP1 PUSH2 0x1298 MSTORE DUP1 PUSH2 0x16F2 MSTORE DUP1 PUSH2 0x18D6 MSTORE DUP1 PUSH2 0x1E1E MSTORE DUP1 PUSH2 0x1FA2 MSTORE DUP1 PUSH2 0x2072 MSTORE DUP1 PUSH2 0x2179 MSTORE DUP1 PUSH2 0x232C MSTORE DUP1 PUSH2 0x23C1 MSTORE DUP1 PUSH2 0x2673 MSTORE DUP1 PUSH2 0x271A MSTORE DUP1 PUSH2 0x27EF MSTORE DUP1 PUSH2 0x28F4 MSTORE DUP1 PUSH2 0x29DC MSTORE DUP1 PUSH2 0x2A5D MSTORE DUP1 PUSH2 0x30EC MSTORE DUP1 PUSH2 0x3422 MSTORE DUP1 PUSH2 0x3478 MSTORE DUP1 PUSH2 0x34AC MSTORE DUP1 PUSH2 0x352D MSTORE DUP1 PUSH2 0x3747 MSTORE DUP1 PUSH2 0x38F7 MSTORE DUP1 PUSH2 0x398C MSTORE POP DUP1 PUSH2 0x10C7 MSTORE DUP1 PUSH2 0x11C5 MSTORE DUP1 PUSH2 0x136B MSTORE DUP1 PUSH2 0x13A4 MSTORE DUP1 PUSH2 0x154F MSTORE DUP1 PUSH2 0x17E4 MSTORE DUP1 PUSH2 0x18B4 MSTORE DUP1 PUSH2 0x1AA1 MSTORE DUP1 PUSH2 0x225F MSTORE DUP1 PUSH2 0x2400 MSTORE DUP1 PUSH2 0x25A9 MSTORE DUP1 PUSH2 0x2A9C MSTORE DUP1 PUSH2 0x2DDF MSTORE DUP1 PUSH2 0x3071 MSTORE DUP1 PUSH2 0x309A MSTORE DUP1 PUSH2 0x30CA MSTORE DUP1 PUSH2 0x32A7 MSTORE DUP1 PUSH2 0x3456 MSTORE DUP1 PUSH2 0x382D MSTORE DUP1 PUSH2 0x39CB MSTORE DUP1 PUSH2 0x4434 MSTORE DUP1 PUSH2 0x4477 MSTORE DUP1 PUSH2 0x47D7 MSTORE DUP1 PUSH2 0x49B8 MSTORE DUP1 PUSH2 0x4F33 MSTORE DUP1 PUSH2 0x5014 MSTORE DUP1 PUSH2 0x5094 MSTORE POP PUSH2 0x55EC PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8803DBEE GT PUSH2 0xD6 JUMPI DUP1 PUSH4 0xC45A0155 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE8E33700 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE8E33700 EQ PUSH2 0xC71 JUMPI DUP1 PUSH4 0xF305D719 EQ PUSH2 0xCFE JUMPI DUP1 PUSH4 0xFB3BDB41 EQ PUSH2 0xD51 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0xC45A0155 EQ PUSH2 0xB25 JUMPI DUP1 PUSH4 0xD06CA61F EQ PUSH2 0xB3A JUMPI DUP1 PUSH4 0xDED9382A EQ PUSH2 0xBF1 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0xAF2979EB GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xAF2979EB EQ PUSH2 0x9C8 JUMPI DUP1 PUSH4 0xB6F9DE95 EQ PUSH2 0xA28 JUMPI DUP1 PUSH4 0xBAA2ABDE EQ PUSH2 0xABB JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x8803DBEE EQ PUSH2 0x8AF JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x954 JUMPI DUP1 PUSH4 0xAD615DEC EQ PUSH2 0x992 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x4A25D94A GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x791AC947 GT PUSH2 0x112 JUMPI DUP1 PUSH4 0x791AC947 EQ PUSH2 0x741 JUMPI DUP1 PUSH4 0x7FF36AB5 EQ PUSH2 0x7E6 JUMPI DUP1 PUSH4 0x85F8C259 EQ PUSH2 0x879 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x4A25D94A EQ PUSH2 0x577 JUMPI DUP1 PUSH4 0x5B0D5984 EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0x5C11D795 EQ PUSH2 0x69C JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x1F00CA74 GT PUSH2 0x169 JUMPI DUP1 PUSH4 0x1F00CA74 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x2195995C EQ PUSH2 0x447 JUMPI DUP1 PUSH4 0x38ED1739 EQ PUSH2 0x4D2 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x2751CEC EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x54D50D4 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x18CBAFE5 EQ PUSH2 0x29B JUMPI PUSH2 0x1D5 JUMP JUMPDEST CALLDATASIZE PUSH2 0x1D5 JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x1D3 JUMPI INVALID JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0xDE4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF37 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF4C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x37C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x364 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1364 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x453 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x160 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH2 0x100 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x120 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x140 ADD CALLDATALOAD PUSH2 0x139A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x52E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x14D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x59A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1669 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0x640 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x18AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x19FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x764 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x78B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1D97 JUMP JUMPDEST PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x7FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x81E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x830 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x852 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2105 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x885 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2525 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x8D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x90B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x92D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2532 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x960 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x969 PUSH2 0x2671 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x9B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2695 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x26A2 JUMP JUMPDEST PUSH2 0x1D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2882 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xADE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x2D65 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x969 PUSH2 0x306F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x3093 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0xC15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x30C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0xC95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0xC0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x3218 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xD14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x33A7 JUMP JUMPDEST PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xD67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xDBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x36D3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0xE57 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE86 DUP10 PUSH32 0x0 DUP11 DUP11 DUP11 ADDRESS DUP11 PUSH2 0x2D65 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0xE96 DUP10 DUP7 DUP6 PUSH2 0x3B22 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xF2B DUP6 DUP4 PUSH2 0x3CE9 JUMP JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF44 DUP5 DUP5 DUP5 PUSH2 0x3E26 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0xFBE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1023 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x10C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1120 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3F4A SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1133 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x1192 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5476 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1257 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x11A2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0x123D PUSH32 0x0 DUP11 DUP11 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x11F1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 DUP12 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x121B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x40B0 JUMP JUMPDEST DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x124A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x419B JUMP JUMPDEST PUSH2 0x1296 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x436B SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x12E2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1334 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1359 DUP5 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x134C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3CE9 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1391 PUSH32 0x0 DUP5 DUP5 PUSH2 0x45F2 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x13CA PUSH32 0x0 DUP16 DUP16 PUSH2 0x40B0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x13D9 JUMPI DUP13 PUSH2 0x13FB JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14AB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x14BE DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x2D65 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP POP POP SWAP12 POP SWAP12 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x154A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x15A8 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3F4A SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x15BB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x161A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5476 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x162A DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x11A2 JUMPI INVALID JUMPDEST PUSH2 0x1359 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x436B SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x16DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1740 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x17DF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x183D PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x45F2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x184D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1192 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x53EA PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x18FA PUSH32 0x0 DUP14 PUSH32 0x0 PUSH2 0x40B0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0x1909 JUMPI DUP12 PUSH2 0x192B JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x19ED DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0x26A2 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1A6E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1AFD DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1A7E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0x1AF7 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1ACD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 DUP11 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x121B JUMPI INVALID JUMPDEST DUP11 PUSH2 0x419B JUMP JUMPDEST PUSH1 0x0 DUP6 DUP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1B2D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BDA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP9 DUP2 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE SWAP3 SWAP4 POP PUSH2 0x1C32 SWAP3 SWAP1 SWAP2 DUP10 SWAP2 DUP10 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 SWAP3 POP PUSH2 0x4780 SWAP2 POP POP JUMP JUMPDEST DUP7 PUSH2 0x1D36 DUP3 DUP9 DUP9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1C65 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D12 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x4B13 AND JUMP JUMPDEST LT ISZERO PUSH2 0x1D8D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5476 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1E07 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP6 DUP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1E6C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1F0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1F1B DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1A7E JUMPI INVALID JUMPDEST PUSH2 0x1F59 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x4780 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FFD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2013 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP7 DUP2 LT ISZERO PUSH2 0x2070 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5476 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1D8D DUP5 DUP3 PUSH2 0x3CE9 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2177 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x21BB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x225A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x22B8 PUSH32 0x0 CALLVALUE DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3F4A SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x22CB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x232A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5476 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2373 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x242C PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1ACD JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2439 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x24DC JUMPI INVALID JUMPDEST PUSH2 0x251B DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x436B SWAP2 POP POP JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF44 DUP5 DUP5 DUP5 PUSH2 0x4B85 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x25A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2602 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x45F2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2612 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x161A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x53EA PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF44 DUP5 DUP5 DUP5 PUSH2 0x4CA9 JUMP JUMPDEST PUSH1 0x0 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2714 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2743 DUP9 PUSH32 0x0 DUP10 DUP10 DUP10 ADDRESS DUP10 PUSH2 0x2D65 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0x27ED SWAP3 POP DUP11 SWAP2 DUP8 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3B22 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2860 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2874 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1359 DUP5 DUP4 PUSH2 0x3CE9 JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x28F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x2936 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x29D5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 CALLVALUE SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A56 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x2AC8 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1ACD JUMPI INVALID JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B46 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2B64 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x2B94 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C41 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP10 DUP2 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP10 DUP3 MSTORE SWAP3 SWAP4 POP PUSH2 0x2C99 SWAP3 SWAP1 SWAP2 DUP11 SWAP2 DUP11 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x4780 SWAP2 POP POP JUMP JUMPDEST DUP8 PUSH2 0x1D36 DUP3 DUP10 DUP10 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x2CCC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2DD8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2E05 PUSH32 0x0 DUP13 DUP13 PUSH2 0x40B0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E9A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2EB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x89AFCB4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 DUP7 AND SWAP3 PUSH4 0x89AFCB44 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F37 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2F67 DUP15 DUP15 PUSH2 0x4D89 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2FA4 JUMPI DUP2 DUP4 PUSH2 0x2FA7 JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP1 SWAP8 POP SWAP6 POP DUP11 DUP8 LT ISZERO PUSH2 0x3005 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5591 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 DUP7 LT ISZERO PUSH2 0x305E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x556B PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1391 PUSH32 0x0 DUP5 DUP5 PUSH2 0x3F4A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3110 PUSH32 0x0 DUP15 PUSH32 0x0 PUSH2 0x40B0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x311F JUMPI DUP13 PUSH2 0x3141 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x31F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3203 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0xDE4 JUMP JUMPDEST SWAP1 SWAP16 SWAP1 SWAP15 POP SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x328D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x329B DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x4EDC JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x32CD PUSH32 0x0 DUP15 DUP15 PUSH2 0x40B0 JUMP JUMPDEST SWAP1 POP PUSH2 0x32DB DUP14 CALLER DUP4 DUP9 PUSH2 0x419B JUMP JUMPDEST PUSH2 0x32E7 DUP13 CALLER DUP4 DUP8 PUSH2 0x419B JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x337A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP14 SWAP4 SWAP13 POP SWAP4 SWAP11 POP SWAP2 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x341C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x344A DUP11 PUSH32 0x0 DUP12 CALLVALUE DUP13 DUP13 PUSH2 0x4EDC JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x349C PUSH32 0x0 DUP13 PUSH32 0x0 PUSH2 0x40B0 JUMP JUMPDEST SWAP1 POP PUSH2 0x34AA DUP12 CALLER DUP4 DUP9 PUSH2 0x419B JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3526 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP3 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3604 JUMPI INVALID JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3683 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3697 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP CALLVALUE DUP5 LT ISZERO PUSH2 0x36C5 JUMPI PUSH2 0x36C5 CALLER DUP6 CALLVALUE SUB PUSH2 0x3CE9 JUMP JUMPDEST POP POP SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x3745 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x3789 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3828 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3886 PUSH32 0x0 DUP9 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x45F2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP CALLVALUE DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3896 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x38F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x53EA PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x393E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3985 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x39F7 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1ACD JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3A04 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A89 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3AA7 JUMPI INVALID JUMPDEST PUSH2 0x3AE6 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x436B SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3AF3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0x251B JUMPI PUSH2 0x251B CALLER DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3B13 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE SUB PUSH2 0x3CE9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3BF8 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3BBB JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3C5A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3C5F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3C8D JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3C8D JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3CE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x553E PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3D60 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3D23 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3DC2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3DC7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x3E21 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5442 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3E80 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54EB PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3E90 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3EE5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5516 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3EF9 DUP6 PUSH2 0x3E5 PUSH4 0xFFFFFFFF PUSH2 0x51DD AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3F0D DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x51DD AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3F33 DUP4 PUSH2 0x3F27 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x51DD AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x5263 AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x3F3E JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x3FBD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A20494E56414C49445F504154480000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3FD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3FFF JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4010 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x40A8 JUMPI PUSH1 0x0 DUP1 PUSH2 0x4062 DUP8 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x403E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x4055 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x52D5 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x4084 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4075 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x3E26 JUMP JUMPDEST DUP5 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x4093 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x401F JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x40BF DUP6 DUP6 PUSH2 0x4D89 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x236595447338C75B512D89A54E3B5160E3A38C8FFE13F0E88C634CA037665806 PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4279 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x423C JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x42DB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x42E0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x430E JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x430E JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x430B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x4363 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5411 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x45EC JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4389 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x43A0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x43B8 DUP4 DUP4 PUSH2 0x4D89 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP8 DUP6 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x43CC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4414 JUMPI DUP3 PUSH1 0x0 PUSH2 0x4418 JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP11 MLOAD SUB DUP9 LT PUSH2 0x442F JUMPI DUP9 PUSH2 0x4470 JUMP JUMPDEST PUSH2 0x4470 PUSH32 0x0 DUP8 DUP13 DUP12 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x4463 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x40B0 JUMP JUMPDEST SWAP1 POP PUSH2 0x449D PUSH32 0x0 DUP9 DUP9 PUSH2 0x40B0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP5 DUP5 DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x44E7 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4572 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x455A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x459F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x45C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP10 ADD SWAP9 POP PUSH2 0x436E SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x4665 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A20494E56414C49445F504154480000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x467D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x46A7 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x46BB JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD JUMPDEST DUP1 ISZERO PUSH2 0x40A8 JUMPI PUSH1 0x0 DUP1 PUSH2 0x471B DUP8 DUP7 PUSH1 0x1 DUP7 SUB DUP2 MLOAD DUP2 LT PUSH2 0x4707 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x4055 JUMPI INVALID JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x473D DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x472E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x4B85 JUMP JUMPDEST DUP5 PUSH1 0x1 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x474C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH2 0x46EB JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x3E21 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x479E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x47B5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x47CD DUP4 DUP4 PUSH2 0x4D89 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH2 0x47FD PUSH32 0x0 DUP6 DUP6 PUSH2 0x40B0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x484B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x485F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4875 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND SWAP1 DUP10 AND EQ PUSH2 0x48BF JUMPI DUP3 DUP5 PUSH2 0x48C2 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x4947 DUP3 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 POP PUSH2 0x4954 DUP7 DUP4 DUP4 PUSH2 0x3E26 JUMP JUMPDEST SWAP5 POP POP POP POP POP PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4998 JUMPI DUP3 PUSH1 0x0 PUSH2 0x499C JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP13 MLOAD SUB DUP11 LT PUSH2 0x49B3 JUMPI DUP11 PUSH2 0x49E7 JUMP JUMPDEST PUSH2 0x49E7 PUSH32 0x0 DUP10 DUP15 DUP14 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x4463 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH32 0x22C0D9F00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP8 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x80 PUSH1 0x84 DUP6 ADD SWAP1 DUP2 MSTORE DUP5 MLOAD PUSH1 0xA4 DUP7 ADD DUP2 SWAP1 MSTORE SWAP7 SWAP8 POP SWAP1 DUP13 AND SWAP6 PUSH4 0x22C0D9F SWAP6 DUP11 SWAP6 DUP11 SWAP6 DUP11 SWAP6 SWAP2 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 PUSH1 0xC4 DUP7 ADD SWAP3 SWAP1 SWAP2 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4A97 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4A7F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4AC4 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4AFA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP12 ADD SWAP11 POP PUSH2 0x4783 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x1394 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x4BDF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x53BE PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x4BEF JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x4C44 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5516 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C68 PUSH2 0x3E8 PUSH2 0x4C5C DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x51DD AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x51DD AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4C82 PUSH2 0x3E5 PUSH2 0x4C5C DUP7 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x4B13 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x4C9F PUSH1 0x1 DUP3 DUP5 DUP2 PUSH2 0x4C92 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x5263 AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x4D03 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54C6 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x4D13 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x4D68 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5516 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x4D79 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x51DD AND JUMP JUMPDEST DUP2 PUSH2 0x4D80 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x4E11 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54A1 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x4E4B JUMPI DUP3 DUP5 PUSH2 0x4E4E JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x4ED5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xE6A4390500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xE6A43905 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4F90 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4FA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x508C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0xC9C6539600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xC9C65396 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x505F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5073 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5089 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x50BA PUSH32 0x0 DUP12 DUP12 PUSH2 0x52D5 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ DUP1 ISZERO PUSH2 0x50CC JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x50DC JUMPI DUP8 SWAP4 POP DUP7 SWAP3 POP PUSH2 0x51D0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50E9 DUP10 DUP5 DUP5 PUSH2 0x4CA9 JUMP JUMPDEST SWAP1 POP DUP8 DUP2 GT PUSH2 0x5156 JUMPI DUP6 DUP2 LT ISZERO PUSH2 0x514B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x556B PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 SWAP5 POP SWAP3 POP DUP3 PUSH2 0x51CE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5163 DUP10 DUP5 DUP7 PUSH2 0x4CA9 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 GT ISZERO PUSH2 0x516F JUMPI INVALID JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x51C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5591 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 POP DUP8 SWAP4 POP JUMPDEST POP JUMPDEST POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x51F8 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x51F5 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x1394 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x1394 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x52E4 DUP6 DUP6 PUSH2 0x4D89 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x52F5 DUP9 DUP9 DUP9 PUSH2 0x40B0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x533A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x534E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5364 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x53AB JUMPI DUP1 DUP3 PUSH2 0x53AE JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP INVALID 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN MSTORE PUSH16 0x757465723A204558434553534956455F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SLOAD PUSH19 0x616E7366657248656C7065723A3A7472616E73 PUSH7 0x657246726F6D3A KECCAK256 PUSH21 0x72616E7366657246726F6D206661696C6564547261 PUSH15 0x7366657248656C7065723A3A736166 PUSH6 0x5472616E7366 PUSH6 0x724554483A20 GASLIMIT SLOAD 0x48 KECCAK256 PUSH21 0x72616E73666572206661696C65644D617258444558 JUMP ORIGIN MSTORE PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494445 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE SLOAD PUSH19 0x616E7366657248656C7065723A3A7361666554 PUSH19 0x616E736665723A207472616E73666572206661 PUSH10 0x6C65644D617258444558 JUMP ORIGIN MSTORE PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F TIMESTAMP 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN MSTORE PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F COINBASE 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 SWAP1 DUP6 0xA7 0xD SWAP10 PUSH7 0x138771C57D346 DUP12 PUSH18 0xDA65E6809FD0A21268D74247DD9D5BE06473 PUSH16 0x6C634300060600330000000000000000 ",
          "sourceMap": "370:18115:8:-:0;;;676:109;5:9:-1;2:2;;;27:1;24;17:12;2:2;676:109:8;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;676:109:8;;;;;;;-1:-1:-1;;;;;;738:18:8;;;;;;;;766:12;;;;;370:18115;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {
            "3270": [
              {
                "length": 32,
                "start": 4295
              },
              {
                "length": 32,
                "start": 4549
              },
              {
                "length": 32,
                "start": 4971
              },
              {
                "length": 32,
                "start": 5028
              },
              {
                "length": 32,
                "start": 5455
              },
              {
                "length": 32,
                "start": 6116
              },
              {
                "length": 32,
                "start": 6324
              },
              {
                "length": 32,
                "start": 6817
              },
              {
                "length": 32,
                "start": 8799
              },
              {
                "length": 32,
                "start": 9216
              },
              {
                "length": 32,
                "start": 9641
              },
              {
                "length": 32,
                "start": 10908
              },
              {
                "length": 32,
                "start": 11743
              },
              {
                "length": 32,
                "start": 12401
              },
              {
                "length": 32,
                "start": 12442
              },
              {
                "length": 32,
                "start": 12490
              },
              {
                "length": 32,
                "start": 12967
              },
              {
                "length": 32,
                "start": 13398
              },
              {
                "length": 32,
                "start": 14381
              },
              {
                "length": 32,
                "start": 14795
              },
              {
                "length": 32,
                "start": 17460
              },
              {
                "length": 32,
                "start": 17527
              },
              {
                "length": 32,
                "start": 18391
              },
              {
                "length": 32,
                "start": 18872
              },
              {
                "length": 32,
                "start": 20275
              },
              {
                "length": 32,
                "start": 20500
              },
              {
                "length": 32,
                "start": 20628
              }
            ],
            "3273": [
              {
                "length": 32,
                "start": 428
              },
              {
                "length": 32,
                "start": 3677
              },
              {
                "length": 32,
                "start": 3736
              },
              {
                "length": 32,
                "start": 4053
              },
              {
                "length": 32,
                "start": 4760
              },
              {
                "length": 32,
                "start": 5874
              },
              {
                "length": 32,
                "start": 6358
              },
              {
                "length": 32,
                "start": 7710
              },
              {
                "length": 32,
                "start": 8098
              },
              {
                "length": 32,
                "start": 8306
              },
              {
                "length": 32,
                "start": 8569
              },
              {
                "length": 32,
                "start": 9004
              },
              {
                "length": 32,
                "start": 9153
              },
              {
                "length": 32,
                "start": 9843
              },
              {
                "length": 32,
                "start": 10010
              },
              {
                "length": 32,
                "start": 10223
              },
              {
                "length": 32,
                "start": 10484
              },
              {
                "length": 32,
                "start": 10716
              },
              {
                "length": 32,
                "start": 10845
              },
              {
                "length": 32,
                "start": 12524
              },
              {
                "length": 32,
                "start": 13346
              },
              {
                "length": 32,
                "start": 13432
              },
              {
                "length": 32,
                "start": 13484
              },
              {
                "length": 32,
                "start": 13613
              },
              {
                "length": 32,
                "start": 14151
              },
              {
                "length": 32,
                "start": 14583
              },
              {
                "length": 32,
                "start": 14732
              }
            ]
          },
          "linkReferences": {},
          "object": "60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4c565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611364945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139a565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114d8565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611669565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ac565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119fe565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d97565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612105565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612525565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612532565b34801561096057600080fd5b50610969612671565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612695565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a2565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612882565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d65565b348015610b3157600080fd5b5061096961306f565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613093945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c0565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613218565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a7565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d3565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610e86897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d65565b9093509150610e96898685613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613ce9565b50965096945050505050565b6000610f44848484613e26565b949350505050565b60608142811015610fbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6111207f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4a92505050565b9150868260018451038151811061113357fe5b60200260200101511015611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b611257868660008181106111a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123d7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111f157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140b0565b8560008151811061124a57fe5b602002602001015161419b565b6112968287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061436b915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132057600080fd5b505af1158015611334573d6000803e3d6000fd5b50505050611359848360018551038151811061134c57fe5b6020026020010151613ce9565b509695505050505050565b60606113917f000000000000000000000000000000000000000000000000000000000000000084846145f2565b90505b92915050565b60008060006113ca7f00000000000000000000000000000000000000000000000000000000000000008f8f6140b0565b90506000876113d9578c6113fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149757600080fd5b505af11580156114ab573d6000803e3d6000fd5b505050506114be8f8f8f8f8f8f8f612d65565b809450819550505050509b509b9950505050505050505050565b6060814281101561154a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6115a87f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4a92505050565b915086826001845103815181106115bb57fe5b6020026020010151101561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b61162a868660008181106111a257fe5b6113598287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061436b915050565b606081428110156116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61183d7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f292505050565b9150868260008151811061184d57fe5b60200260200101511115611192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806153ea6027913960400191505060405180910390fd5b6000806118fa7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006140b0565b9050600086611909578b61192b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b505050506119ed8d8d8d8d8d8d6126a2565b9d9c50505050505050505050505050565b8042811015611a6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611afd85856000818110611a7e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121b57fe5b8a61419b565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d6020811015611bf057600080fd5b50516040805160208881028281018201909352888252929350611c32929091899189918291850190849080828437600092019190915250889250614780915050565b86611d368288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d6020811015611d2857600080fd5b50519063ffffffff614b1316565b1015611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b5050505050505050565b8042811015611e0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b611f1b85856000818110611a7e57fe5b611f59858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614780915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611fe957600080fd5b505afa158015611ffd573d6000803e3d6000fd5b505050506040513d602081101561201357600080fd5b5051905086811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050611d8d8482613ce9565b6060814281101561217757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106121bb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6122b87f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4a92505050565b915086826001845103815181106122cb57fe5b6020026020010151101561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237357fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af11580156123ba573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b8460008151811061243957fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d60208110156124d457600080fd5b50516124dc57fe5b61251b8287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061436b915050565b5095945050505050565b6000610f44848484614b85565b606081428110156125a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6126027f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f292505050565b9150868260008151811061261257fe5b6020026020010151111561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806153ea6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f44848484614ca9565b6000814281101561271457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b612743887f00000000000000000000000000000000000000000000000000000000000000008989893089612d65565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ed92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127bc57600080fd5b505afa1580156127d0573d6000803e3d6000fd5b505050506040513d60208110156127e657600080fd5b5051613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506113598483613ce9565b80428110156128f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061293657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4257600080fd5b505af1158015612a56573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ac87f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050506040513d6020811015612b5c57600080fd5b5051612b6457fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2d57600080fd5b505afa158015612c41573d6000803e3d6000fd5b505050506040513d6020811015612c5757600080fd5b50516040805160208981028281018201909352898252929350612c999290918a918a918291850190849080828437600092019190915250899250614780915050565b87611d368289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612ccc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b6000808242811015612dd857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000612e057f00000000000000000000000000000000000000000000000000000000000000008c8c6140b0565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050506040513d6020811015612eb057600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6040811015612f4d57600080fd5b50805160209091015190925090506000612f678e8e614d89565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa4578183612fa7565b82825b90975095508a871015613005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806155916026913960400191505060405180910390fd5b8986101561305e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061556b6026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484613f4a565b60008060006131107f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006140b0565b905060008761311f578c613141565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050506132038e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61329b8c8c8c8c8c8c614edc565b909450925060006132cd7f00000000000000000000000000000000000000000000000000000000000000008e8e6140b0565b90506132db8d33838861419b565b6132e78c33838761419b565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336657600080fd5b505af115801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61344a8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614edc565b9094509250600061349c7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006140b0565b90506134aa8b33838861419b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351257600080fd5b505af1158015613526573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d257600080fd5b505af11580156135e6573d6000803e3d6000fd5b505050506040513d60208110156135fc57600080fd5b505161360457fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b50519250348410156136c5576136c533853403613ce9565b505096509650969350505050565b6060814281101561374557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061378957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6138867f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f292505050565b9150348260008151811061389657fe5b602002602001015111156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806153ea6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061393e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b84600081518110613a0457fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7557600080fd5b505af1158015613a89573d6000803e3d6000fd5b505050506040513d6020811015613a9f57600080fd5b5051613aa757fe5b613ae68287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061436b915050565b81600081518110613af357fe5b602002602001015134111561251b5761251b3383600081518110613b1357fe5b60200260200101513403613ce9565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bf857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5a576040519150601f19603f3d011682016040523d82523d6000602084013e613c5f565b606091505b5091509150818015613c8d575080511580613c8d5750808060200190516020811015613c8a57600080fd5b50515b613ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061553e602d913960400191505060405180910390fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d6057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d23565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dc2576040519150601f19603f3d011682016040523d82523d6000602084013e613dc7565b606091505b5050905080613e21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806154426034913960400191505060405180910390fd5b505050565b6000808411613e80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806154eb602b913960400191505060405180910390fd5b600083118015613e905750600082115b613ee5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806155166028913960400191505060405180910390fd5b6000613ef9856103e563ffffffff6151dd16565b90506000613f0d828563ffffffff6151dd16565b90506000613f3383613f27886103e863ffffffff6151dd16565b9063ffffffff61526316565b9050808281613f3e57fe5b04979650505050505050565b6060600282511015613fbd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613fd557600080fd5b50604051908082528060200260200182016040528015613fff578160200160208202803683370190505b509050828160008151811061401057fe5b60200260200101818152505060005b60018351038110156140a8576000806140628786858151811061403e57fe5b602002602001015187866001018151811061405557fe5b60200260200101516152d5565b9150915061408484848151811061407557fe5b60200260200101518383613e26565b84846001018151811061409357fe5b6020908102919091010152505060010161401f565b509392505050565b60008060006140bf8585614d89565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061427957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161423c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142db576040519150601f19603f3d011682016040523d82523d6000602084013e6142e0565b606091505b509150915081801561430e57508051158061430e575080806020019051602081101561430b57600080fd5b50515b614363576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806154116031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156145ec5760008084838151811061438957fe5b60200260200101518584600101815181106143a057fe5b60200260200101519150915060006143b88383614d89565b50905060008785600101815181106143cc57fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461441457826000614418565b6000835b91509150600060028a5103881061442f5788614470565b6144707f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061446357fe5b60200260200101516140b0565b905061449d7f000000000000000000000000000000000000000000000000000000000000000088886140b0565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156144e7576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561457257818101518382015260200161455a565b50505050905090810190601f16801561459f5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156145c157600080fd5b505af11580156145d5573d6000803e3d6000fd5b50506001909901985061436e975050505050505050565b50505050565b606060028251101561466557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561467d57600080fd5b506040519080825280602002602001820160405280156146a7578160200160208202803683370190505b50905082816001835103815181106146bb57fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140a85760008061471b8786600186038151811061470757fe5b602002602001015187868151811061405557fe5b9150915061473d84848151811061472e57fe5b60200260200101518383614b85565b84600185038151811061474c57fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016146eb565b60005b6001835103811015613e215760008084838151811061479e57fe5b60200260200101518584600101815181106147b557fe5b60200260200101519150915060006147cd8383614d89565b50905060006147fd7f000000000000000000000000000000000000000000000000000000000000000085856140b0565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561484b57600080fd5b505afa15801561485f573d6000803e3d6000fd5b505050506040513d606081101561487557600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a8116908916146148bf5782846148c2565b83835b91509150614947828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b9550614954868383613e26565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149985782600061499c565b6000835b91509150600060028c51038a106149b3578a6149e7565b6149e77f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061446357fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614a97578181015183820152602001614a7f565b50505050905090810190601f168015614ac45780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614ae657600080fd5b505af1158015614afa573d6000803e3d6000fd5b50506001909b019a506147839950505050505050505050565b8082038281111561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614bdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806153be602c913960400191505060405180910390fd5b600083118015614bef5750600082115b614c44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806155166028913960400191505060405180910390fd5b6000614c686103e8614c5c868863ffffffff6151dd16565b9063ffffffff6151dd16565b90506000614c826103e5614c5c868963ffffffff614b1316565b9050614c9f6001828481614c9257fe5b049063ffffffff61526316565b9695505050505050565b6000808411614d03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154c66025913960400191505060405180910390fd5b600083118015614d135750600082115b614d68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806155166028913960400191505060405180910390fd5b82614d79858463ffffffff6151dd16565b81614d8057fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154a16025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614e4b578284614e4e565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614ed557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614f7c57600080fd5b505afa158015614f90573d6000803e3d6000fd5b505050506040513d6020811015614fa657600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561508c57604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b15801561505f57600080fd5b505af1158015615073573d6000803e3d6000fd5b505050506040513d602081101561508957600080fd5b50505b6000806150ba7f00000000000000000000000000000000000000000000000000000000000000008b8b6152d5565b915091508160001480156150cc575080155b156150dc578793508692506151d0565b60006150e9898484614ca9565b9050878111615156578581101561514b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061556b6026913960400191505060405180910390fd5b8894509250826151ce565b6000615163898486614ca9565b90508981111561516f57fe5b878110156151c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806155916026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b60008115806151f8575050808202828282816151f557fe5b04145b61139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006152e48585614d89565b5090506000806152f58888886140b0565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561533a57600080fd5b505afa15801561534e573d6000803e3d6000fd5b505050506040513d606081101561536457600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146153ab5780826153ae565b81815b9099909850965050505050505056fe4d61725844455856324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e544d6172584445585632526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534d61725844455856324c6962726172793a20494e53554646494349454e545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f425f414d4f554e544d6172584445585632526f757465723a20494e53554646494349454e545f415f414d4f554e54a2646970667358221220919085a70d99660138771c57d3468b71da65e6809fd0a21268d74247dd9d5be064736f6c63430006060033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8803DBEE GT PUSH2 0xD6 JUMPI DUP1 PUSH4 0xC45A0155 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xE8E33700 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xE8E33700 EQ PUSH2 0xC71 JUMPI DUP1 PUSH4 0xF305D719 EQ PUSH2 0xCFE JUMPI DUP1 PUSH4 0xFB3BDB41 EQ PUSH2 0xD51 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0xC45A0155 EQ PUSH2 0xB25 JUMPI DUP1 PUSH4 0xD06CA61F EQ PUSH2 0xB3A JUMPI DUP1 PUSH4 0xDED9382A EQ PUSH2 0xBF1 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0xAF2979EB GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xAF2979EB EQ PUSH2 0x9C8 JUMPI DUP1 PUSH4 0xB6F9DE95 EQ PUSH2 0xA28 JUMPI DUP1 PUSH4 0xBAA2ABDE EQ PUSH2 0xABB JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x8803DBEE EQ PUSH2 0x8AF JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x954 JUMPI DUP1 PUSH4 0xAD615DEC EQ PUSH2 0x992 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x4A25D94A GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x791AC947 GT PUSH2 0x112 JUMPI DUP1 PUSH4 0x791AC947 EQ PUSH2 0x741 JUMPI DUP1 PUSH4 0x7FF36AB5 EQ PUSH2 0x7E6 JUMPI DUP1 PUSH4 0x85F8C259 EQ PUSH2 0x879 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x4A25D94A EQ PUSH2 0x577 JUMPI DUP1 PUSH4 0x5B0D5984 EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0x5C11D795 EQ PUSH2 0x69C JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x1F00CA74 GT PUSH2 0x169 JUMPI DUP1 PUSH4 0x1F00CA74 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x2195995C EQ PUSH2 0x447 JUMPI DUP1 PUSH4 0x38ED1739 EQ PUSH2 0x4D2 JUMPI PUSH2 0x1D5 JUMP JUMPDEST DUP1 PUSH4 0x2751CEC EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x54D50D4 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x18CBAFE5 EQ PUSH2 0x29B JUMPI PUSH2 0x1D5 JUMP JUMPDEST CALLDATASIZE PUSH2 0x1D5 JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x1D3 JUMPI INVALID JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0xDE4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF37 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF4C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x37C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x364 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1364 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x453 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x160 DUP2 LT ISZERO PUSH2 0x46B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH2 0x100 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x120 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x140 ADD CALLDATALOAD PUSH2 0x139A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x51C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x52E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x14D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x59A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1669 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0x640 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x18AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x6E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x19FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x764 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x78B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1D97 JUMP JUMPDEST PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x7FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x81E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x830 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x852 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2105 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x885 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2525 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x8D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x90B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x92D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2532 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x960 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x969 PUSH2 0x2671 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x9B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2695 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x289 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x26A2 JUMP JUMPDEST PUSH2 0x1D3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xA3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xA60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xA94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2882 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0xADE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x2D65 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x969 PUSH2 0x306F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xB7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x3093 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0xC15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x30C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0xC95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0xC0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x3218 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xD14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x33A7 JUMP JUMPDEST PUSH2 0x340 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xD67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xDBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x36D3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0xE57 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE86 DUP10 PUSH32 0x0 DUP11 DUP11 DUP11 ADDRESS DUP11 PUSH2 0x2D65 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0xE96 DUP10 DUP7 DUP6 PUSH2 0x3B22 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF1D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xF2B DUP6 DUP4 PUSH2 0x3CE9 JUMP JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF44 DUP5 DUP5 DUP5 PUSH2 0x3E26 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0xFBE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1023 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x10C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1120 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3F4A SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1133 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x1192 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5476 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1257 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x11A2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0x123D PUSH32 0x0 DUP11 DUP11 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x11F1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 DUP12 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x121B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x40B0 JUMP JUMPDEST DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x124A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x419B JUMP JUMPDEST PUSH2 0x1296 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x436B SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x12E2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1334 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1359 DUP5 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x134C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3CE9 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1391 PUSH32 0x0 DUP5 DUP5 PUSH2 0x45F2 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x13CA PUSH32 0x0 DUP16 DUP16 PUSH2 0x40B0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x13D9 JUMPI DUP13 PUSH2 0x13FB JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14AB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x14BE DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x2D65 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP POP POP SWAP12 POP SWAP12 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x154A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x15A8 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3F4A SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x15BB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x161A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5476 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x162A DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x11A2 JUMPI INVALID JUMPDEST PUSH2 0x1359 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x436B SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x16DB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1740 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x17DF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x183D PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x45F2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x184D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1192 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x53EA PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x18FA PUSH32 0x0 DUP14 PUSH32 0x0 PUSH2 0x40B0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0x1909 JUMPI DUP12 PUSH2 0x192B JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19DB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x19ED DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0x26A2 JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1A6E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1AFD DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1A7E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH2 0x1AF7 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1ACD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 DUP11 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x121B JUMPI INVALID JUMPDEST DUP11 PUSH2 0x419B JUMP JUMPDEST PUSH1 0x0 DUP6 DUP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1B2D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BDA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP9 DUP2 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE SWAP3 SWAP4 POP PUSH2 0x1C32 SWAP3 SWAP1 SWAP2 DUP10 SWAP2 DUP10 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 SWAP3 POP PUSH2 0x4780 SWAP2 POP POP JUMP JUMPDEST DUP7 PUSH2 0x1D36 DUP3 DUP9 DUP9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1C65 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D12 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x4B13 AND JUMP JUMPDEST LT ISZERO PUSH2 0x1D8D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5476 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1E07 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP6 DUP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1E6C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1F0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1F1B DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1A7E JUMPI INVALID JUMPDEST PUSH2 0x1F59 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x4780 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1FFD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2013 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP7 DUP2 LT ISZERO PUSH2 0x2070 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5476 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1D8D DUP5 DUP3 PUSH2 0x3CE9 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2177 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x21BB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x225A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x22B8 PUSH32 0x0 CALLVALUE DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x3F4A SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x22CB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x232A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5476 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2373 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x242C PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1ACD JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2439 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x24DC JUMPI INVALID JUMPDEST PUSH2 0x251B DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x436B SWAP2 POP POP JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF44 DUP5 DUP5 DUP5 PUSH2 0x4B85 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x25A4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2602 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x45F2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2612 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x161A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x53EA PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF44 DUP5 DUP5 DUP5 PUSH2 0x4CA9 JUMP JUMPDEST PUSH1 0x0 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2714 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x2743 DUP9 PUSH32 0x0 DUP10 DUP10 DUP10 ADDRESS DUP10 PUSH2 0x2D65 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0x27ED SWAP3 POP DUP11 SWAP2 DUP8 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3B22 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2860 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2874 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1359 DUP5 DUP4 PUSH2 0x3CE9 JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x28F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x2936 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x29D5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 CALLVALUE SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A56 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x2AC8 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1ACD JUMPI INVALID JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B46 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2B64 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x2B94 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C41 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP10 DUP2 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP10 DUP3 MSTORE SWAP3 SWAP4 POP PUSH2 0x2C99 SWAP3 SWAP1 SWAP2 DUP11 SWAP2 DUP11 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x4780 SWAP2 POP POP JUMP JUMPDEST DUP8 PUSH2 0x1D36 DUP3 DUP10 DUP10 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x2CCC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2DD8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2E05 PUSH32 0x0 DUP13 DUP13 PUSH2 0x40B0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E9A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2EB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x89AFCB4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 DUP7 AND SWAP3 PUSH4 0x89AFCB44 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F37 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x2F67 DUP15 DUP15 PUSH2 0x4D89 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2FA4 JUMPI DUP2 DUP4 PUSH2 0x2FA7 JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP1 SWAP8 POP SWAP6 POP DUP11 DUP8 LT ISZERO PUSH2 0x3005 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5591 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 DUP7 LT ISZERO PUSH2 0x305E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x556B PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1391 PUSH32 0x0 DUP5 DUP5 PUSH2 0x3F4A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3110 PUSH32 0x0 DUP15 PUSH32 0x0 PUSH2 0x40B0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x311F JUMPI DUP13 PUSH2 0x3141 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x31F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3203 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0xDE4 JUMP JUMPDEST SWAP1 SWAP16 SWAP1 SWAP15 POP SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x328D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x329B DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x4EDC JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x32CD PUSH32 0x0 DUP15 DUP15 PUSH2 0x40B0 JUMP JUMPDEST SWAP1 POP PUSH2 0x32DB DUP14 CALLER DUP4 DUP9 PUSH2 0x419B JUMP JUMPDEST PUSH2 0x32E7 DUP13 CALLER DUP4 DUP8 PUSH2 0x419B JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x337A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP14 SWAP4 SWAP13 POP SWAP4 SWAP11 POP SWAP2 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x341C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x344A DUP11 PUSH32 0x0 DUP12 CALLVALUE DUP13 DUP13 PUSH2 0x4EDC JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x349C PUSH32 0x0 DUP13 PUSH32 0x0 PUSH2 0x40B0 JUMP JUMPDEST SWAP1 POP PUSH2 0x34AA DUP12 CALLER DUP4 DUP9 PUSH2 0x419B JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3512 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3526 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP3 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x35FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3604 JUMPI INVALID JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3683 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3697 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x36AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP CALLVALUE DUP5 LT ISZERO PUSH2 0x36C5 JUMPI PUSH2 0x36C5 CALLER DUP6 CALLVALUE SUB PUSH2 0x3CE9 JUMP JUMPDEST POP POP SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x3745 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20455850495245440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x3789 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3828 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D6172584445585632526F757465723A20494E56414C49445F50415448000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3886 PUSH32 0x0 DUP9 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x45F2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP CALLVALUE DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3896 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x38F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x53EA PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x393E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3971 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3985 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x39F7 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1ACD JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3A04 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A89 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3A9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x3AA7 JUMPI INVALID JUMPDEST PUSH2 0x3AE6 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x436B SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3AF3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0x251B JUMPI PUSH2 0x251B CALLER DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3B13 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE SUB PUSH2 0x3CE9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3BF8 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3BBB JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3C5A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3C5F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3C8D JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3C8D JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3C8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3CE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x553E PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3D60 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3D23 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3DC2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3DC7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x3E21 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5442 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3E80 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54EB PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3E90 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3EE5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5516 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3EF9 DUP6 PUSH2 0x3E5 PUSH4 0xFFFFFFFF PUSH2 0x51DD AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3F0D DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x51DD AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3F33 DUP4 PUSH2 0x3F27 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x51DD AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x5263 AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x3F3E JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x3FBD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A20494E56414C49445F504154480000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3FD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3FFF JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x4010 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x40A8 JUMPI PUSH1 0x0 DUP1 PUSH2 0x4062 DUP8 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x403E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x4055 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x52D5 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x4084 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4075 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x3E26 JUMP JUMPDEST DUP5 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x4093 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x401F JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x40BF DUP6 DUP6 PUSH2 0x4D89 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x236595447338C75B512D89A54E3B5160E3A38C8FFE13F0E88C634CA037665806 PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4279 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x423C JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x42DB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x42E0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x430E JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x430E JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x430B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x4363 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5411 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x45EC JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4389 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x43A0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x43B8 DUP4 DUP4 PUSH2 0x4D89 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP8 DUP6 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x43CC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4414 JUMPI DUP3 PUSH1 0x0 PUSH2 0x4418 JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP11 MLOAD SUB DUP9 LT PUSH2 0x442F JUMPI DUP9 PUSH2 0x4470 JUMP JUMPDEST PUSH2 0x4470 PUSH32 0x0 DUP8 DUP13 DUP12 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x4463 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x40B0 JUMP JUMPDEST SWAP1 POP PUSH2 0x449D PUSH32 0x0 DUP9 DUP9 PUSH2 0x40B0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x22C0D9F DUP5 DUP5 DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x44E7 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4572 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x455A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x459F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x45C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP10 ADD SWAP9 POP PUSH2 0x436E SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x4665 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A20494E56414C49445F504154480000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x467D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x46A7 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x46BB JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD JUMPDEST DUP1 ISZERO PUSH2 0x40A8 JUMPI PUSH1 0x0 DUP1 PUSH2 0x471B DUP8 DUP7 PUSH1 0x1 DUP7 SUB DUP2 MLOAD DUP2 LT PUSH2 0x4707 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x4055 JUMPI INVALID JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x473D DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x472E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x4B85 JUMP JUMPDEST DUP5 PUSH1 0x1 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x474C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH2 0x46EB JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x3E21 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x479E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x47B5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x47CD DUP4 DUP4 PUSH2 0x4D89 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH2 0x47FD PUSH32 0x0 DUP6 DUP6 PUSH2 0x40B0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x484B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x485F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x4875 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND SWAP1 DUP10 AND EQ PUSH2 0x48BF JUMPI DUP3 DUP5 PUSH2 0x48C2 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x4947 DUP3 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 POP PUSH2 0x4954 DUP7 DUP4 DUP4 PUSH2 0x3E26 JUMP JUMPDEST SWAP5 POP POP POP POP POP PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4998 JUMPI DUP3 PUSH1 0x0 PUSH2 0x499C JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP13 MLOAD SUB DUP11 LT PUSH2 0x49B3 JUMPI DUP11 PUSH2 0x49E7 JUMP JUMPDEST PUSH2 0x49E7 PUSH32 0x0 DUP10 DUP15 DUP14 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x4463 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH32 0x22C0D9F00000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP8 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x80 PUSH1 0x84 DUP6 ADD SWAP1 DUP2 MSTORE DUP5 MLOAD PUSH1 0xA4 DUP7 ADD DUP2 SWAP1 MSTORE SWAP7 SWAP8 POP SWAP1 DUP13 AND SWAP6 PUSH4 0x22C0D9F SWAP6 DUP11 SWAP6 DUP11 SWAP6 DUP11 SWAP6 SWAP2 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 PUSH1 0xC4 DUP7 ADD SWAP3 SWAP1 SWAP2 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4A97 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4A7F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4AC4 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4AE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4AFA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP12 ADD SWAP11 POP PUSH2 0x4783 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x1394 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x4BDF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x53BE PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x4BEF JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x4C44 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5516 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4C68 PUSH2 0x3E8 PUSH2 0x4C5C DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x51DD AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x51DD AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4C82 PUSH2 0x3E5 PUSH2 0x4C5C DUP7 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x4B13 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x4C9F PUSH1 0x1 DUP3 DUP5 DUP2 PUSH2 0x4C92 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x5263 AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x4D03 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54C6 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x4D13 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x4D68 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5516 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x4D79 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x51DD AND JUMP JUMPDEST DUP2 PUSH2 0x4D80 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x4E11 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x54A1 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0x4E4B JUMPI DUP3 DUP5 PUSH2 0x4E4E JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x4ED5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xE6A4390500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xE6A43905 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4F90 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4FA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x508C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0xC9C6539600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xC9C65396 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x505F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5073 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5089 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x50BA PUSH32 0x0 DUP12 DUP12 PUSH2 0x52D5 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ DUP1 ISZERO PUSH2 0x50CC JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x50DC JUMPI DUP8 SWAP4 POP DUP7 SWAP3 POP PUSH2 0x51D0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50E9 DUP10 DUP5 DUP5 PUSH2 0x4CA9 JUMP JUMPDEST SWAP1 POP DUP8 DUP2 GT PUSH2 0x5156 JUMPI DUP6 DUP2 LT ISZERO PUSH2 0x514B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x556B PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 SWAP5 POP SWAP3 POP DUP3 PUSH2 0x51CE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5163 DUP10 DUP5 DUP7 PUSH2 0x4CA9 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 GT ISZERO PUSH2 0x516F JUMPI INVALID JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x51C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5591 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 POP DUP8 SWAP4 POP JUMPDEST POP JUMPDEST POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x51F8 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x51F5 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x1394 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x1394 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x52E4 DUP6 DUP6 PUSH2 0x4D89 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x52F5 DUP9 DUP9 DUP9 PUSH2 0x40B0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x533A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x534E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5364 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x53AB JUMPI DUP1 DUP3 PUSH2 0x53AE JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP INVALID 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN MSTORE PUSH16 0x757465723A204558434553534956455F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SLOAD PUSH19 0x616E7366657248656C7065723A3A7472616E73 PUSH7 0x657246726F6D3A KECCAK256 PUSH21 0x72616E7366657246726F6D206661696C6564547261 PUSH15 0x7366657248656C7065723A3A736166 PUSH6 0x5472616E7366 PUSH6 0x724554483A20 GASLIMIT SLOAD 0x48 KECCAK256 PUSH21 0x72616E73666572206661696C65644D617258444558 JUMP ORIGIN MSTORE PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494445 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE SLOAD PUSH19 0x616E7366657248656C7065723A3A7361666554 PUSH19 0x616E736665723A207472616E73666572206661 PUSH10 0x6C65644D617258444558 JUMP ORIGIN MSTORE PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F TIMESTAMP 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN MSTORE PUSH16 0x757465723A20494E5355464649434945 0x4E SLOAD 0x5F COINBASE 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 SWAP1 DUP6 0xA7 0xD SWAP10 PUSH7 0x138771C57D346 DUP12 PUSH18 0xDA65E6809FD0A21268D74247DD9D5BE06473 PUSH16 0x6C634300060600330000000000000000 ",
          "sourceMap": "370:18115:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;835:10;:18;849:4;835:18;;828:26;;;;370:18115;;12:1:-1;9;2:12;4894:653:8;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4894:653:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;4894:653:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17468:254;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17468:254:8;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17468:254:8;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11899:834;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11899:834:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;11899:834:8;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;11899:834:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;11899:834:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11899:834:8;;-1:-1:-1;11899:834:8;-1:-1:-1;11899:834:8;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11899:834:8;;;;;;;;;;;;;;;;;18238:245;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18238:245:8;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;18238:245:8;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;18238:245:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;18238:245:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;18238:245:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;18238:245:8;;-1:-1:-1;18238:245:8;;-1:-1:-1;;;;;18238:245:8:i;5552:663::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5552:663:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;5552:663:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9176:615::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9176:615:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;9176:615:8;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;9176:615:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;9176:615:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9176:615:8;;-1:-1:-1;9176:615:8;-1:-1:-1;9176:615:8;;;;;;;;;:::i;11082:812::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11082:812:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;11082:812:8;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;11082:812:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;11082:812:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11082:812:8;;-1:-1:-1;11082:812:8;-1:-1:-1;11082:812:8;;;;;;;;;:::i;7637:703::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7637:703:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;7637:703:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14877:698::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14877:698:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;14877:698:8;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;14877:698:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;14877:698:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;14877:698:8;;-1:-1:-1;14877:698:8;-1:-1:-1;14877:698:8;;;;;;;;;:::i;16413:822::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16413:822:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;16413:822:8;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;16413:822:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;16413:822:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;16413:822:8;;-1:-1:-1;16413:822:8;-1:-1:-1;16413:822:8;;;;;;;;;:::i;10394:683::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;10394:683:8;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;10394:683:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;10394:683:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10394:683:8;;-1:-1:-1;10394:683:8;-1:-1:-1;10394:683:8;;;;;;;;;:::i;17728:253::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17728:253:8;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17728:253:8;;;;;;;;;;;;:::i;9796:593::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9796:593:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;9796:593:8;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;9796:593:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;9796:593:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9796:593:8;;-1:-1:-1;9796:593:8;-1:-1:-1;9796:593:8;;;;;;;;;:::i;502:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;502:38:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17276:186;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17276:186:8;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17276:186:8;;;;;;;;;;;;:::i;6952:680::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6952:680:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;6952:680:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15580:828::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;15580:828:8;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;15580:828:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;15580:828:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;15580:828:8;;-1:-1:-1;15580:828:8;-1:-1:-1;15580:828:8;;;;;;;;;:::i;4040:849::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4040:849:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;4040:849:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;455:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;455:41:8;;;:::i;17987:245::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17987:245:8;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;17987:245:8;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;17987:245:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;17987:245:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;17987:245:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;17987:245:8;;-1:-1:-1;17987:245:8;;-1:-1:-1;;;;;17987:245:8:i;6220:656::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6220:656:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;6220:656:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2321:723::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2321:723:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;2321:723:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;3049:951;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;3049:951:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12738:794::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;12738:794:8;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;12738:794:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;12738:794:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;12738:794:8;;-1:-1:-1;12738:794:8;-1:-1:-1;12738:794:8;;;;;;;;;:::i;4894:653::-;5124:16;5142:14;5105:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5195:188:::1;5224:5;5243:4;5261:9;5284:14;5312:12;5346:4;5365:8;5195:15;:188::i;:::-;5168:215:::0;;-1:-1:-1;5168:215:8;-1:-1:-1;5393:51:8::1;5421:5:::0;5428:2;5168:215;5393:27:::1;:51::i;:::-;5460:4;5454:20;;;5475:9;5454:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;5454:31:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;5454:31:8;;;;5495:45;5526:2;5530:9;5495:30;:45::i;:::-;4894:653:::0;;;;;;;;;;:::o;17468:254::-;17616:14;17653:62;17683:8;17693:9;17704:10;17653:29;:62::i;:::-;17646:69;17468:254;-1:-1:-1;;;;17468:254:8:o;11899:834::-;12108:21;12081:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12153:29:::1;12178:4;12153:29;:4:::0;;12158:15;;;12153:21;;::::1;;;;;;;;;;;;;:29;;;12145:71;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;12236:55;12267:7;12276:8;12286:4;;12236:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;12236:30:8::1;::::0;-1:-1:-1;;;12236:55:8:i:1;:::-;12226:65;;12340:12;12309:7;12334:1;12317:7;:14;:18;12309:27;;;;;;;;;;;;;;:43;;12301:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12410:139;12455:4;;12460:1;12455:7;;;;;;;;;;;;;;;12464:10;12476:51;12501:7;12510:4;;12515:1;12510:7;;;;;;;;;;;;;;;12519:4;;12524:1;12519:7;;;;;;;;;;;;;;;12476:24;:51::i;:::-;12529:7;12537:1;12529:10;;;;;;;;;;;;;;12410:31;:139::i;:::-;12559:35;12565:7;12574:4;;12559:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;12588:4:8::1;::::0;-1:-1:-1;12559:5:8::1;::::0;-1:-1:-1;;12559:35:8:i:1;:::-;12610:4;12604:20;;;12625:7;12650:1;12633:7;:14;:18;12625:27;;;;;;;;;;;;;;12604:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;12604:49:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12604:49:8;;;;12663:63;12694:2;12698:7;12723:1;12706:7;:14;:18;12698:27;;;;;;;;;;;;;;12663:30;:63::i;:::-;11899:834:::0;;;;;;;;;:::o;18238:245::-;18377:21;18421:55;18451:7;18460:9;18471:4;18421:29;:55::i;:::-;18414:62;;18238:245;;;;;:::o;5552:663::-;5849:12;5863;5887;5902:49;5927:7;5936:6;5944;5902:24;:49::i;:::-;5887:64;;5961:10;5974;:33;;5998:9;5974:33;;;5992:2;5974:33;6017:80;;;;;;6045:10;6017:80;;;;6065:4;6017:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5961:46;;-1:-1:-1;6017:27:8;;;;;;:80;;;;;-1:-1:-1;;6017:80:8;;;;;;;;-1:-1:-1;6017:27:8;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;6017:80:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6017:80:8;;;;6128;6144:6;6152;6160:9;6171:10;6183;6195:2;6199:8;6128:15;:80::i;:::-;6107:101;;;;;;;;5552:663;;;;;;;;;;;;;;;;:::o;9176:615::-;9394:21;9375:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9437:55:::1;9468:7;9477:8;9487:4;;9437:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;9437:30:8::1;::::0;-1:-1:-1;;;9437:55:8:i:1;:::-;9427:65;;9541:12;9510:7;9535:1;9518:7;:14;:18;9510:27;;;;;;;;;;;;;;:43;;9502:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9611:139;9656:4;;9661:1;9656:7;;;;;;9611:139;9760:24;9766:7;9775:4;;9760:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;9781:2:8;;-1:-1:-1;9760:5:8::1;::::0;-1:-1:-1;;9760:24:8:i:1;11082:812::-:0;11291:21;11264:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11336:29:::1;11361:4;11336:29;:4:::0;;11341:15;;;11336:21;;::::1;;;;;;;;;;;;;:29;;;11328:71;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;11419:55;11449:7;11458:9;11469:4;;11419:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11419:29:8::1;::::0;-1:-1:-1;;;11419:55:8:i:1;:::-;11409:65;;11506:11;11492:7;11500:1;11492:10;;;;;;;;;;;;;;:25;;11484:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7637:703:::0;7947:14;7973:12;7988:46;8013:7;8022:5;8029:4;7988:24;:46::i;:::-;7973:61;;8044:10;8057;:33;;8081:9;8057:33;;;8075:2;8057:33;8100:80;;;;;;8128:10;8100:80;;;;8148:4;8100:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8044:46;;-1:-1:-1;8100:27:8;;;;;;:80;;;;;-1:-1:-1;;8100:80:8;;;;;;;;-1:-1:-1;8100:27:8;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;8100:80:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8100:80:8;;;;8202:131;8263:5;8270:9;8281:14;8297:12;8311:2;8315:8;8202:47;:131::i;:::-;8190:143;7637:703;-1:-1:-1;;;;;;;;;;;;;7637:703:8:o;14877:698::-;15105:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15125:137:::1;15170:4;;15175:1;15170:7;;;;;;;;;;;;;;;15179:10;15191:51;15216:7;15225:4;;15230:1;15225:7;;;;;;;;;;;;;;;15234:4;;15239:1;15234:7;;;;;;15191:51;15244:8;15125:31;:137::i;:::-;15272:18;15300:4:::0;;15305:15;;;15300:21;;::::1;;;;;;;;;;;;;15293:39;;;15333:2;15293:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;15293:43:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;15293:43:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;15293:43:8;15346:44:::1;::::0;;15293:43:::1;15346:44:::0;;::::1;::::0;;;;;;;;;;;15293:43;;-1:-1:-1;15346:44:8::1;::::0;;;15381:4;;;;;;15346:44;::::1;::::0;15381:4;;15346:44;15381:4;15346:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;15387:2:8;;-1:-1:-1;15346:34:8::1;::::0;-1:-1:-1;;15346:44:8:i:1;:::-;15487:12:::0;15421:62:::1;15469:13:::0;15428:4;;15433:15;;;15428:21;;::::1;;;;;;;;;;;;;15421:39;;;15461:2;15421:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;15421:43:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;15421:43:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;15421:43:8;;:62:::1;:47;:62;:::i;:::-;:78;;15400:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;662:1;14877:698:::0;;;;;;;:::o;16413:822::-;16670:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16702:29:::1;16727:4;16702:29;:4:::0;;16707:15;;;16702:21;;::::1;;;;;;;;;;;;;:29;;;16694:71;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;16775:137;16820:4;;16825:1;16820:7;;;;;;16775:137;16922:55;16957:4;;16922:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;16971:4:8::1;::::0;-1:-1:-1;16922:34:8::1;::::0;-1:-1:-1;;16922:55:8:i:1;:::-;17004:37;::::0;;;;;17035:4:::1;17004:37;::::0;::::1;::::0;;;16987:14:::1;::::0;17004:22:::1;17011:4;17004:22;::::0;::::1;::::0;:37;;;;;::::1;::::0;;;;;;;;;:22;:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;17004:37:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;17004:37:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;17004:37:8;;-1:-1:-1;17059:25:8;;::::1;;17051:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17148:4;17142:20;;;17163:9;17142:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;17142:31:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;17142:31:8;;;;17183:45;17214:2;17218:9;17183:30;:45::i;10394:683::-:0;10604:21;10577:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10660:4:::1;10649:15;;:4;;10654:1;10649:7;;;;;;;;;;;;;;;:15;;;10641:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10718:56;10749:7;10758:9;10769:4;;10718:56;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;10718:30:8::1;::::0;-1:-1:-1;;;10718:56:8:i:1;:::-;10708:66;;10823:12;10792:7;10817:1;10800:7;:14;:18;10792:27;;;;;;;;;;;;;;:43;;10784:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10899:4;10893:19;;;10920:7;10928:1;10920:10;;;;;;;;;;;;;;10893:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;10893:40:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;10893:40:8;;;;;10956:4;10950:20;;;10971:51;10996:7;11005:4;;11010:1;11005:7;;;;;;10971:51;11024:7;11032:1;11024:10;;;;;;;;;;;;;;10950:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;10950:85:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;10950:85:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;10950:85:8;10943:93:::1;;;;11046:24;11052:7;11061:4;;11046:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11067:2:8;;-1:-1:-1;11046:5:8::1;::::0;-1:-1:-1;;11046:24:8:i:1;:::-;10394:683:::0;;;;;;;;:::o;17728:253::-;17876:13;17912:62;17941:9;17952;17963:10;17912:28;:62::i;9796:593::-;10014:21;9995:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10057:55:::1;10087:7;10096:9;10107:4;;10057:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;10057:29:8::1;::::0;-1:-1:-1;;;10057:55:8:i:1;:::-;10047:65;;10144:11;10130:7;10138:1;10130:10;;;;;;;;;;;;;;:25;;10122:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;502:38:::0;;;:::o;17276:186::-;17373:12;17404:51;17427:7;17436:8;17446;17404:22;:51::i;6952:680::-;7211:14;7192:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7253:188:::1;7282:5;7301:4;7319:9;7342:14;7370:12;7404:4;7423:8;7253:15;:188::i;:::-;7490:38;::::0;;;;;7522:4:::1;7490:38;::::0;::::1;::::0;;;7237:204;;-1:-1:-1;7451:78:8::1;::::0;-1:-1:-1;7479:5:8;;7486:2;;7490:23:::1;::::0;::::1;::::0;::::1;::::0;:38;;;;;::::1;::::0;;;;;;;;;:23;:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;7490:38:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;7490:38:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;7490:38:8;7451:27:::1;:78::i;:::-;7545:4;7539:20;;;7560:9;7539:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;7539:31:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;7539:31:8;;;;7580:45;7611:2;7615:9;7580:30;:45::i;15580:828::-:0;15830:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15873:4:::1;15862:15;;:4;;15867:1;15862:7;;;;;;;;;;;;;;;:15;;;15854:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;15921:13;15937:9;15921:25;;15962:4;15956:19;;;15983:8;15956:38;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;15956:38:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;15956:38:8;;;;;16017:4;16011:20;;;16032:51;16057:7;16066:4;;16071:1;16066:7;;;;;;16032:51;16085:8;16011:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;16011:83:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;16011:83:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;16011:83:8;16004:91:::1;;;;16105:18;16133:4:::0;;16138:15;;;16133:21;;::::1;;;;;;;;;;;;;16126:39;;;16166:2;16126:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;16126:43:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;16126:43:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;16126:43:8;16179:44:::1;::::0;;16126:43:::1;16179:44:::0;;::::1;::::0;;;;;;;;;;;16126:43;;-1:-1:-1;16179:44:8::1;::::0;;;16214:4;;;;;;16179:44;::::1;::::0;16214:4;;16179:44;16214:4;16179:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;16220:2:8;;-1:-1:-1;16179:34:8::1;::::0;-1:-1:-1;;16179:44:8:i:1;:::-;16320:12:::0;16254:62:::1;16302:13:::0;16261:4;;16266:15;;;16261:21;;::::1;;;;;;;;;;;;;16254:39;;;16294:2;16254:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;4040:849:8::0;4286:12;4300;4267:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4324:12:::1;4339:49;4364:7;4373:6;4381;4339:24;:49::i;:::-;4398:62;::::0;;;;;4432:10:::1;4398:62;::::0;::::1;::::0;:33:::1;::::0;::::1;:62:::0;;;;;;;;;;;;;;4324:64;;-1:-1:-1;4398:33:8;;::::1;::::0;:62;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;4398:33:8;:62;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;4398:62:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4398:62:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;4527:29:8::1;::::0;;;;;:25:::1;:29:::0;;::::1;;::::0;::::1;::::0;;;4497:12:::1;::::0;;;4527:25;;::::1;::::0;::::1;::::0;:29;;;;;;;;;;;4497:12;4527:25;:29;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;4527:29:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4527:29:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;4527:29:8;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;4527:29:8;-1:-1:-1;4567:14:8::1;4586:43;4614:6:::0;4622;4586:27:::1;:43::i;:::-;4566:63;;;4670:6;4660:16;;:6;:16;;;:58;;4701:7;4710;4660:58;;;4680:7;4689;4660:58;4639:79:::0;;-1:-1:-1;4639:79:8;-1:-1:-1;4736:21:8;;::::1;;4728:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4829:10;4818:7;:21;;4810:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;662:1;;;;4040:849:::0;;;;;;;;;;;:::o;455:41::-;;;:::o;17987:245::-;18126:21;18170:55;18201:7;18210:8;18220:4;18170:30;:55::i;6220:656::-;6501:16;6519:14;6545:12;6560:46;6585:7;6594:5;6601:4;6560:24;:46::i;:::-;6545:61;;6616:10;6629;:33;;6653:9;6629:33;;;6647:2;6629:33;6672:80;;;;;;6700:10;6672:80;;;;6720:4;6672:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6616:46;;-1:-1:-1;6672:27:8;;;;;;:80;;;;;-1:-1:-1;;6672:80:8;;;;;;;;-1:-1:-1;6672:27:8;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;6672:80:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6672:80:8;;;;6789;6808:5;6815:9;6826:14;6842:12;6856:2;6860:8;6789:18;:80::i;:::-;6762:107;;;;-1:-1:-1;6220:656:8;-1:-1:-1;;;;;;;;;;;;;6220:656:8:o;2321:723::-;2600:12;2614;2628:14;2581:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2675:85:::1;2689:6;2697;2705:14;2721;2737:10;2749;2675:13;:85::i;:::-;2654:106:::0;;-1:-1:-1;2654:106:8;-1:-1:-1;2770:12:8::1;2785:49;2810:7;2819:6:::0;2827;2785:24:::1;:49::i;:::-;2770:64;;2844:66;2876:6;2884:10;2896:4;2902:7;2844:31;:66::i;:::-;2920;2952:6;2960:10;2972:4;2978:7;2920:31;:66::i;:::-;3023:4;3008:25;;;3034:2;3008:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3008:29:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3008:29:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3008:29:8;2321:723;;;;-1:-1:-1;3008:29:8;;-1:-1:-1;2321:723:8;;-1:-1:-1;;;;;;;;;2321:723:8:o;3049:951::-;3295:16;3313:14;3329;3276:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3382:169:::1;3409:5;3428:4;3446:18;3478:9;3501:14;3529:12;3382:13;:169::i;:::-;3355:196:::0;;-1:-1:-1;3355:196:8;-1:-1:-1;3561:12:8::1;3576:46;3601:7;3610:5:::0;3617:4:::1;3576:24;:46::i;:::-;3561:61;;3632:69;3664:5;3671:10;3683:4;3689:11;3632:31;:69::i;:::-;3717:4;3711:19;;;3738:9;3711:39;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3711:39:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3711:39:8;;;;;3773:4;3767:20;;;3788:4;3794:9;3767:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3767:37:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3767:37:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3767:37:8;3760:45:::1;;;;3842:4;3827:25;;;3853:2;3827:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3827:29:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3827:29:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3827:29:8;;-1:-1:-1;3905:9:8::1;:21:::0;-1:-1:-1;3901:92:8::1;;;3928:65;3959:10;3983:9;3971;:21;3928:30;:65::i;:::-;662:1;3049:951:::0;;;;;;;;;;;:::o;12738:794::-;12945:21;12918:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13001:4:::1;12990:15;;:4;;12995:1;12990:7;;;;;;;;;;;;;;;:15;;;12982:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;13059:55;13089:7;13098:9;13109:4;;13059:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;13059:29:8::1;::::0;-1:-1:-1;;;13059:55:8:i:1;:::-;13049:65;;13146:9;13132:7;13140:1;13132:10;;;;;;;;;;;;;;:23;;13124:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13215:4;13209:19;;;13236:7;13244:1;13236:10;;;;;;;;;;;;;;13209:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;13209:40:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;13209:40:8;;;;;13272:4;13266:20;;;13287:51;13312:7;13321:4;;13326:1;13321:7;;;;;;13287:51;13340:7;13348:1;13340:10;;;;;;;;;;;;;;13266:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;13266:85:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;13266:85:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;13266:85:8;13259:93:::1;;;;13362:24;13368:7;13377:4;;13362:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;13383:2:8;;-1:-1:-1;13362:5:8::1;::::0;-1:-1:-1;;13362:24:8:i:1;:::-;13447:7;13455:1;13447:10;;;;;;;;;;;;;;13435:9;:22;13431:94;;;13459:66;13490:10;13514:7;13522:1;13514:10;;;;;;;;;;;;;;13502:9;:22;13459:30;:66::i;652:438:4:-:0;878:45;;;867:10;878:45;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;878:45:4;;;;;;;25:18:-1;;61:17;;96:58;182:15;878:45:4;179:29:-1;160:49;;867:57:4;;;;832:12;;846:17;;867:10;;;;878:45;867:57;;;25:18:-1;867:57:4;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;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:4;;;;;;;;;;;;;;;;;;;;;;;;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:4;;;;955:7;:57;;;;-1:-1:-1;967:11:4;;: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:4;967:44;934:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:438;;;;;:::o;1588:214::-;1700:12;;;1660;1700;;;;;;;;;1678:7;;;;1693:5;;1678:35;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;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:4;;;;;;;;;;;;;;;;;;;;;;;;;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:4;;;1731:7;1723:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1588:214;;;:::o;2183:510:17:-;2276:14;2321:1;2310:8;:12;2302:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2400:1;2388:9;:13;:31;;;;;2418:1;2405:10;:14;2388:31;2380:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2474:20;2497:17;:8;2510:3;2497:17;:12;:17;:::i;:::-;2474:40;-1:-1:-1;2524:14:17;2541:31;2474:40;2561:10;2541:31;:19;:31;:::i;:::-;2524:48;-1:-1:-1;2582:16:17;2601:40;2625:15;2601:19;:9;2615:4;2601:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;2582:59;;2675:11;2663:9;:23;;;;;;;2183:510;-1:-1:-1;;;;;;;2183:510:17:o;3356:503::-;3457:21;3513:1;3498:4;:11;:16;;3490:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3580:4;:11;3569:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3569:23:17;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;3569:23:17;;3559:33;;3615:8;3602:7;3610:1;3602:10;;;;;;;;;;;;;:21;;;;;3638:6;3633:220;3664:1;3650:4;:11;:15;3646:1;:19;3633:220;;;3687:14;3703:15;3722:42;3734:7;3743:4;3748:1;3743:7;;;;;;;;;;;;;;3752:4;3757:1;3761;3757:5;3752:11;;;;;;;;;;;;;;3722;:42::i;:::-;3686:78;;;;3795:47;3808:7;3816:1;3808:10;;;;;;;;;;;;;;3820:9;3831:10;3795:12;:47::i;:::-;3778:7;3786:1;3790;3786:5;3778:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;3667:3:17;;3633:220;;;;3356:503;;;;;:::o;725:470::-;814:12;839:14;855;873:26;884:6;892;873:10;:26::i;:::-;1033:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1033:32:17;;;;;1023:43;;;;;;939:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;939:246:17;;;;;;;929:257;;;;;;;;;725:470;-1:-1:-1;;;;;725:470:17:o;1096:486:4:-;1360:51;;;1349:10;1360:51;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1360:51:4;;;;;;;25:18:-1;;61:17;;96:58;182:15;1360:51:4;179:29:-1;160:49;;1349:63:4;;;;1314:12;;1328:17;;1349:10;;;;1360:51;1349:63;;;25:18:-1;1349:63:4;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;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;;;1349:63:4;;;;;;;;;;;;;;;;;;;;;;;;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;;1313:99:4;;;;1443:7;:57;;;;-1:-1:-1;1455:11:4;;:16;;:44;;;1486:4;1475:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1475:24:4;1455:44;1422:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1096:486;;;;;;:::o;8447:724:8:-;8553:6;8548:617;8579:1;8565:4;:11;:15;8561:1;:19;8548:617;;;8602:13;8617:14;8636:4;8641:1;8636:7;;;;;;;;;;;;;;8645:4;8650:1;8654;8650:5;8645:11;;;;;;;;;;;;;;8601:56;;;;8672:14;8691:42;8719:5;8726:6;8691:27;:42::i;:::-;8671:62;;;8747:14;8764:7;8772:1;8776;8772:5;8764:14;;;;;;;;;;;;;;8747:31;;8793:15;8810;8838:6;8829:15;;:5;:15;;;:61;;8871:9;8887:1;8829:61;;;8853:1;8857:9;8829:61;8792:98;;;;8904:10;8935:1;8921:4;:11;:15;8917:1;:19;:82;;8996:3;8917:82;;;8939:54;8964:7;8973:6;8981:4;8986:1;8990;8986:5;8981:11;;;;;;;;;;;;;;8939:24;:54::i;:::-;8904:95;;9028:48;9053:7;9062:5;9069:6;9028:24;:48::i;:::-;9013:69;;;9100:10;9112;9124:2;9138:1;9128:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;9128:12:8;87:42:-1;143:17;;-1:-1;9128:12:8;;9013:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9013:141:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9013:141:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8582:3:8;;;;;-1:-1:-1;8548:617:8;;-1:-1:-1;;;;;;;;8548:617:8;;;8447:724;;;:::o;3937:524:17:-;4038:21;4094:1;4079:4;:11;:16;;4071:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4161:4;:11;4150:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4150:23:17;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;4150:23:17;;4140:33;;4213:9;4183:7;4208:1;4191:7;:14;:18;4183:27;;;;;;;;;;;;;;;;;:39;4246:11;;:15;;4232:223;4263:5;;4232:223;;4290:14;4306:15;4325:42;4337:7;4346:4;4355:1;4351;:5;4346:11;;;;;;;;;;;;;;4359:4;4364:1;4359:7;;;;;;;4325:42;4289:78;;;;4398:46;4410:7;4418:1;4410:10;;;;;;;;;;;;;;4422:9;4433:10;4398:11;:46::i;:::-;4381:7;4393:1;4389;:5;4381:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;4270:3:17;;4232:223;;13675:1197:8;13787:6;13782:1084;13813:1;13799:4;:11;:15;13795:1;:19;13782:1084;;;13836:13;13851:14;13870:4;13875:1;13870:7;;;;;;;;;;;;;;13879:4;13884:1;13888;13884:5;13879:11;;;;;;;;;;;;;;13835:56;;;;13906:14;13925:42;13953:5;13960:6;13925:27;:42::i;:::-;13905:62;;;13981:19;14018:48;14043:7;14052:5;14059:6;14018:24;:48::i;:::-;13981:86;;14081:16;14111:17;14197:13;14212;14230:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14230:18:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14230:18:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14230:18:8;;;;;;;14196:52;;;;;-1:-1:-1;14196:52:8;;-1:-1:-1;14263:17:8;;14304:15;;;;;;;;:61;;14346:8;14356;14304:61;;;14323:8;14333;14304:61;14262:103;;;;14393:56;14436:12;14400:5;14393:23;;;14425:4;14393:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;14393:56:8;14379:70;;14478:71;14508:11;14521:12;14535:13;14478:29;:71::i;:::-;14463:86;;13782:1084;;;;14578:15;14595;14623:6;14614:15;;:5;:15;;;:67;;14659:12;14678:1;14614:67;;;14638:1;14642:12;14614:67;14577:104;;;;14695:10;14726:1;14712:4;:11;:15;14708:1;:19;:82;;14787:3;14708:82;;;14730:54;14755:7;14764:6;14772:4;14777:1;14781;14777:5;14772:11;;;;;;;14730:54;14842:12;;;14852:1;14842:12;;;;;;;;;;14804:51;;;;;;;;;;;;;;;:9;:51;;;;;;;;;;;;;;;;;;;;;;14695:95;;-1:-1:-1;14804:9:8;;;;;;14814:10;;14826;;14695:95;;14842:12;;14804:51;;;;;;;;14842:12;;14804:51;;;;14842:12;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14804:51:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14804:51:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;13816:3:8;;;;;-1:-1:-1;13782:1084:8;;-1:-1:-1;;;;;;;;;;13782:1084:8;286:127:20;369:5;;;364:16;;;;356:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2811:466:17;2904:13;2949:1;2937:9;:13;2929:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3029:1;3017:9;:13;:31;;;;;3047:1;3034:10;:14;3017:31;3009:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3103:14;3120:34;3149:4;3120:24;:9;3134;3120:24;:13;:24;:::i;:::-;:28;:34;:28;:34;:::i;:::-;3103:51;-1:-1:-1;3164:16:17;3183:34;3213:3;3183:25;:10;3198:9;3183:25;:14;:25;:::i;:34::-;3164:53;;3238:32;3268:1;3251:11;3239:9;:23;;;;;;;3238:32;:29;:32;:::i;:::-;3227:43;2811:466;-1:-1:-1;;;;;;2811:466:17:o;1747:317::-;1829:12;1871:1;1861:7;:11;1853:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1943:1;1932:8;:12;:28;;;;;1959:1;1948:8;:12;1932:28;1924:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2049:8;2025:21;:7;2037:8;2025:21;:11;:21;:::i;:::-;:32;;;;;;;1747:317;-1:-1:-1;;;;1747:317:17:o;291:345::-;366:14;382;426:6;416:16;;:6;:16;;;;408:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:6;503:15;;:6;:15;;;:53;;541:6;549;503:53;;;522:6;530;503:53;484:72;;-1:-1:-1;484:72:17;-1:-1:-1;574:20:17;;;566:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:345;;;;;:::o;953:1363:8:-;1257:50;;;;;;:64;:50;;;;;;;;;;;;;;;;1164:12;;;;;;1275:7;1257:34;;;;;;:50;;;;;;;;;;;;;;;:34;:50;;;2:2:-1;;;;27:1;24;17:12;2:2;1257:50:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1257:50:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1257:50:8;:64;;;1253:148;;;1337:53;;;;;;:37;:53;;;;;;;;;;;;;;;;1355:7;1337:37;;;;;;:53;;;;;;;;;;;;;;;-1:-1:-1;1337:37:8;:53;;;2:2:-1;;;;27:1;24;17:12;2:2;1337:53:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1337:53:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;1253:148:8;1411:13;1426;1443:53;1472:7;1481:6;1489;1443:28;:53::i;:::-;1410:86;;;;1510:8;1522:1;1510:13;:30;;;;-1:-1:-1;1527:13:8;;1510:30;1506:804;;;1578:14;;-1:-1:-1;1594:14:8;;-1:-1:-1;1506:804:8;;;1640:19;1662:58;1685:14;1701:8;1711;1662:22;:58::i;:::-;1640:80;;1756:14;1738;:32;1734:566;;1816:10;1798:14;:28;;1790:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1909:14;;-1:-1:-1;1925:14:8;-1:-1:-1;1925:14:8;1734:566;;;1979:19;2001:58;2024:14;2040:8;2050;2001:22;:58::i;:::-;1979:80;;2102:14;2084;:32;;2077:40;;;;2161:10;2143:14;:28;;2135:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:14;-1:-1:-1;2270:14:8;;-1:-1:-1;1734:566:8;1506:804;;953:1363;;;;;;;;;;;:::o;419:140:20:-;471:6;497;;;:30;;-1:-1:-1;;512:5:20;;;526:1;521;512:5;521:1;507:15;;;;;:20;497:30;489:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;154:126;237:5;;;232:16;;;;224:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1250:387:17;1343:13;1358;1384:14;1403:26;1414:6;1422;1403:10;:26::i;:::-;1383:46;;;1440:13;1455;1488:32;1496:7;1505:6;1513;1488:7;:32::i;:::-;1473:60;;;:62;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1473:62:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1473:62:17;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1473:62:17;;;;;;;1439:96;;;;;-1:-1:-1;1439:96:17;;-1:-1:-1;1568:16:17;;;;;;;;:62;;1611:8;1621;1568:62;;;1588:8;1598;1568:62;1545:85;;;;-1:-1:-1;1250:387:17;-1:-1:-1;;;;;;;1250:387:17:o"
        }
      },
      "interface": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_factory",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_WETH",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "WETH",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountADesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenDesired",
              "type": "uint256"
            },
            {
              "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": "addLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountIn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountOut",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsIn",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsOut",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveB",
              "type": "uint256"
            }
          ],
          "name": "quote",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "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": "removeLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "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": "removeLiquidityETHSupportingFeeOnTransferTokens",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapETHForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokensSupportingFeeOnTransferTokens",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETHSupportingFeeOnTransferTokens",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "bytecode": "60c06040523480156200001157600080fd5b506040516200577338038062005773833981810160405260408110156200003757600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c6155ec62000187600039806101ac5280610e5d5280610e985280610fd5528061129852806116f252806118d65280611e1e5280611fa252806120725280612179528061232c52806123c15280612673528061271a52806127ef52806128f452806129dc5280612a5d52806130ec5280613422528061347852806134ac528061352d528061374752806138f7528061398c5250806110c752806111c5528061136b52806113a4528061154f52806117e452806118b45280611aa1528061225f528061240052806125a95280612a9c5280612ddf5280613071528061309a52806130ca52806132a75280613456528061382d52806139cb5280614434528061447752806147d752806149b85280614f335280615014528061509452506155ec6000f3fe60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4c565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611364945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139a565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114d8565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611669565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ac565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119fe565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d97565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612105565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612525565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612532565b34801561096057600080fd5b50610969612671565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612695565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a2565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612882565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d65565b348015610b3157600080fd5b5061096961306f565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613093945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c0565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613218565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a7565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d3565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610e86897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d65565b9093509150610e96898685613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613ce9565b50965096945050505050565b6000610f44848484613e26565b949350505050565b60608142811015610fbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6111207f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4a92505050565b9150868260018451038151811061113357fe5b60200260200101511015611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b611257868660008181106111a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123d7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111f157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140b0565b8560008151811061124a57fe5b602002602001015161419b565b6112968287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061436b915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132057600080fd5b505af1158015611334573d6000803e3d6000fd5b50505050611359848360018551038151811061134c57fe5b6020026020010151613ce9565b509695505050505050565b60606113917f000000000000000000000000000000000000000000000000000000000000000084846145f2565b90505b92915050565b60008060006113ca7f00000000000000000000000000000000000000000000000000000000000000008f8f6140b0565b90506000876113d9578c6113fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149757600080fd5b505af11580156114ab573d6000803e3d6000fd5b505050506114be8f8f8f8f8f8f8f612d65565b809450819550505050509b509b9950505050505050505050565b6060814281101561154a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6115a87f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4a92505050565b915086826001845103815181106115bb57fe5b6020026020010151101561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b61162a868660008181106111a257fe5b6113598287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061436b915050565b606081428110156116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61183d7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f292505050565b9150868260008151811061184d57fe5b60200260200101511115611192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806153ea6027913960400191505060405180910390fd5b6000806118fa7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006140b0565b9050600086611909578b61192b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b505050506119ed8d8d8d8d8d8d6126a2565b9d9c50505050505050505050505050565b8042811015611a6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611afd85856000818110611a7e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121b57fe5b8a61419b565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d6020811015611bf057600080fd5b50516040805160208881028281018201909352888252929350611c32929091899189918291850190849080828437600092019190915250889250614780915050565b86611d368288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d6020811015611d2857600080fd5b50519063ffffffff614b1316565b1015611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b5050505050505050565b8042811015611e0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b611f1b85856000818110611a7e57fe5b611f59858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614780915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611fe957600080fd5b505afa158015611ffd573d6000803e3d6000fd5b505050506040513d602081101561201357600080fd5b5051905086811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050611d8d8482613ce9565b6060814281101561217757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106121bb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6122b87f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4a92505050565b915086826001845103815181106122cb57fe5b6020026020010151101561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237357fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af11580156123ba573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b8460008151811061243957fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d60208110156124d457600080fd5b50516124dc57fe5b61251b8287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061436b915050565b5095945050505050565b6000610f44848484614b85565b606081428110156125a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6126027f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f292505050565b9150868260008151811061261257fe5b6020026020010151111561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806153ea6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f44848484614ca9565b6000814281101561271457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b612743887f00000000000000000000000000000000000000000000000000000000000000008989893089612d65565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ed92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127bc57600080fd5b505afa1580156127d0573d6000803e3d6000fd5b505050506040513d60208110156127e657600080fd5b5051613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506113598483613ce9565b80428110156128f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061293657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4257600080fd5b505af1158015612a56573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ac87f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050506040513d6020811015612b5c57600080fd5b5051612b6457fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2d57600080fd5b505afa158015612c41573d6000803e3d6000fd5b505050506040513d6020811015612c5757600080fd5b50516040805160208981028281018201909352898252929350612c999290918a918a918291850190849080828437600092019190915250899250614780915050565b87611d368289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612ccc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b6000808242811015612dd857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000612e057f00000000000000000000000000000000000000000000000000000000000000008c8c6140b0565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050506040513d6020811015612eb057600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6040811015612f4d57600080fd5b50805160209091015190925090506000612f678e8e614d89565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa4578183612fa7565b82825b90975095508a871015613005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806155916026913960400191505060405180910390fd5b8986101561305e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061556b6026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484613f4a565b60008060006131107f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006140b0565b905060008761311f578c613141565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050506132038e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61329b8c8c8c8c8c8c614edc565b909450925060006132cd7f00000000000000000000000000000000000000000000000000000000000000008e8e6140b0565b90506132db8d33838861419b565b6132e78c33838761419b565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336657600080fd5b505af115801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61344a8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614edc565b9094509250600061349c7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006140b0565b90506134aa8b33838861419b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351257600080fd5b505af1158015613526573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d257600080fd5b505af11580156135e6573d6000803e3d6000fd5b505050506040513d60208110156135fc57600080fd5b505161360457fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b50519250348410156136c5576136c533853403613ce9565b505096509650969350505050565b6060814281101561374557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061378957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6138867f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f292505050565b9150348260008151811061389657fe5b602002602001015111156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806153ea6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061393e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b84600081518110613a0457fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7557600080fd5b505af1158015613a89573d6000803e3d6000fd5b505050506040513d6020811015613a9f57600080fd5b5051613aa757fe5b613ae68287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061436b915050565b81600081518110613af357fe5b602002602001015134111561251b5761251b3383600081518110613b1357fe5b60200260200101513403613ce9565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bf857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5a576040519150601f19603f3d011682016040523d82523d6000602084013e613c5f565b606091505b5091509150818015613c8d575080511580613c8d5750808060200190516020811015613c8a57600080fd5b50515b613ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061553e602d913960400191505060405180910390fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d6057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d23565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dc2576040519150601f19603f3d011682016040523d82523d6000602084013e613dc7565b606091505b5050905080613e21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806154426034913960400191505060405180910390fd5b505050565b6000808411613e80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806154eb602b913960400191505060405180910390fd5b600083118015613e905750600082115b613ee5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806155166028913960400191505060405180910390fd5b6000613ef9856103e563ffffffff6151dd16565b90506000613f0d828563ffffffff6151dd16565b90506000613f3383613f27886103e863ffffffff6151dd16565b9063ffffffff61526316565b9050808281613f3e57fe5b04979650505050505050565b6060600282511015613fbd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613fd557600080fd5b50604051908082528060200260200182016040528015613fff578160200160208202803683370190505b509050828160008151811061401057fe5b60200260200101818152505060005b60018351038110156140a8576000806140628786858151811061403e57fe5b602002602001015187866001018151811061405557fe5b60200260200101516152d5565b9150915061408484848151811061407557fe5b60200260200101518383613e26565b84846001018151811061409357fe5b6020908102919091010152505060010161401f565b509392505050565b60008060006140bf8585614d89565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061427957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161423c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142db576040519150601f19603f3d011682016040523d82523d6000602084013e6142e0565b606091505b509150915081801561430e57508051158061430e575080806020019051602081101561430b57600080fd5b50515b614363576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806154116031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156145ec5760008084838151811061438957fe5b60200260200101518584600101815181106143a057fe5b60200260200101519150915060006143b88383614d89565b50905060008785600101815181106143cc57fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461441457826000614418565b6000835b91509150600060028a5103881061442f5788614470565b6144707f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061446357fe5b60200260200101516140b0565b905061449d7f000000000000000000000000000000000000000000000000000000000000000088886140b0565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156144e7576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561457257818101518382015260200161455a565b50505050905090810190601f16801561459f5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156145c157600080fd5b505af11580156145d5573d6000803e3d6000fd5b50506001909901985061436e975050505050505050565b50505050565b606060028251101561466557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561467d57600080fd5b506040519080825280602002602001820160405280156146a7578160200160208202803683370190505b50905082816001835103815181106146bb57fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140a85760008061471b8786600186038151811061470757fe5b602002602001015187868151811061405557fe5b9150915061473d84848151811061472e57fe5b60200260200101518383614b85565b84600185038151811061474c57fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016146eb565b60005b6001835103811015613e215760008084838151811061479e57fe5b60200260200101518584600101815181106147b557fe5b60200260200101519150915060006147cd8383614d89565b50905060006147fd7f000000000000000000000000000000000000000000000000000000000000000085856140b0565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561484b57600080fd5b505afa15801561485f573d6000803e3d6000fd5b505050506040513d606081101561487557600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a8116908916146148bf5782846148c2565b83835b91509150614947828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b9550614954868383613e26565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149985782600061499c565b6000835b91509150600060028c51038a106149b3578a6149e7565b6149e77f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061446357fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614a97578181015183820152602001614a7f565b50505050905090810190601f168015614ac45780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614ae657600080fd5b505af1158015614afa573d6000803e3d6000fd5b50506001909b019a506147839950505050505050505050565b8082038281111561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614bdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806153be602c913960400191505060405180910390fd5b600083118015614bef5750600082115b614c44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806155166028913960400191505060405180910390fd5b6000614c686103e8614c5c868863ffffffff6151dd16565b9063ffffffff6151dd16565b90506000614c826103e5614c5c868963ffffffff614b1316565b9050614c9f6001828481614c9257fe5b049063ffffffff61526316565b9695505050505050565b6000808411614d03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154c66025913960400191505060405180910390fd5b600083118015614d135750600082115b614d68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806155166028913960400191505060405180910390fd5b82614d79858463ffffffff6151dd16565b81614d8057fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154a16025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614e4b578284614e4e565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614ed557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614f7c57600080fd5b505afa158015614f90573d6000803e3d6000fd5b505050506040513d6020811015614fa657600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561508c57604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b15801561505f57600080fd5b505af1158015615073573d6000803e3d6000fd5b505050506040513d602081101561508957600080fd5b50505b6000806150ba7f00000000000000000000000000000000000000000000000000000000000000008b8b6152d5565b915091508160001480156150cc575080155b156150dc578793508692506151d0565b60006150e9898484614ca9565b9050878111615156578581101561514b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061556b6026913960400191505060405180910390fd5b8894509250826151ce565b6000615163898486614ca9565b90508981111561516f57fe5b878110156151c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806155916026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b60008115806151f8575050808202828282816151f557fe5b04145b61139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006152e48585614d89565b5090506000806152f58888886140b0565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561533a57600080fd5b505afa15801561534e573d6000803e3d6000fd5b505050506040513d606081101561536457600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146153ab5780826153ae565b81815b9099909850965050505050505056fe4d61725844455856324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e544d6172584445585632526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534d61725844455856324c6962726172793a20494e53554646494349454e545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f425f414d4f554e544d6172584445585632526f757465723a20494e53554646494349454e545f415f414d4f554e54a2646970667358221220919085a70d99660138771c57d3468b71da65e6809fd0a21268d74247dd9d5be064736f6c63430006060033",
      "bin": "60c06040523480156200001157600080fd5b506040516200577338038062005773833981810160405260408110156200003757600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c6155ec62000187600039806101ac5280610e5d5280610e985280610fd5528061129852806116f252806118d65280611e1e5280611fa252806120725280612179528061232c52806123c15280612673528061271a52806127ef52806128f452806129dc5280612a5d52806130ec5280613422528061347852806134ac528061352d528061374752806138f7528061398c5250806110c752806111c5528061136b52806113a4528061154f52806117e452806118b45280611aa1528061225f528061240052806125a95280612a9c5280612ddf5280613071528061309a52806130ca52806132a75280613456528061382d52806139cb5280614434528061447752806147d752806149b85280614f335280615014528061509452506155ec6000f3fe60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4c565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611364945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139a565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114d8565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611669565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ac565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119fe565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d97565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612105565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612525565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612532565b34801561096057600080fd5b50610969612671565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612695565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a2565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612882565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d65565b348015610b3157600080fd5b5061096961306f565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613093945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c0565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613218565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a7565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d3565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610e86897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d65565b9093509150610e96898685613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613ce9565b50965096945050505050565b6000610f44848484613e26565b949350505050565b60608142811015610fbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6111207f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4a92505050565b9150868260018451038151811061113357fe5b60200260200101511015611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b611257868660008181106111a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123d7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111f157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140b0565b8560008151811061124a57fe5b602002602001015161419b565b6112968287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061436b915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132057600080fd5b505af1158015611334573d6000803e3d6000fd5b50505050611359848360018551038151811061134c57fe5b6020026020010151613ce9565b509695505050505050565b60606113917f000000000000000000000000000000000000000000000000000000000000000084846145f2565b90505b92915050565b60008060006113ca7f00000000000000000000000000000000000000000000000000000000000000008f8f6140b0565b90506000876113d9578c6113fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149757600080fd5b505af11580156114ab573d6000803e3d6000fd5b505050506114be8f8f8f8f8f8f8f612d65565b809450819550505050509b509b9950505050505050505050565b6060814281101561154a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6115a87f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4a92505050565b915086826001845103815181106115bb57fe5b6020026020010151101561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b61162a868660008181106111a257fe5b6113598287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061436b915050565b606081428110156116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61183d7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f292505050565b9150868260008151811061184d57fe5b60200260200101511115611192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806153ea6027913960400191505060405180910390fd5b6000806118fa7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006140b0565b9050600086611909578b61192b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b505050506119ed8d8d8d8d8d8d6126a2565b9d9c50505050505050505050505050565b8042811015611a6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611afd85856000818110611a7e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121b57fe5b8a61419b565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d6020811015611bf057600080fd5b50516040805160208881028281018201909352888252929350611c32929091899189918291850190849080828437600092019190915250889250614780915050565b86611d368288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d6020811015611d2857600080fd5b50519063ffffffff614b1316565b1015611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b5050505050505050565b8042811015611e0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b611f1b85856000818110611a7e57fe5b611f59858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614780915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611fe957600080fd5b505afa158015611ffd573d6000803e3d6000fd5b505050506040513d602081101561201357600080fd5b5051905086811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050611d8d8482613ce9565b6060814281101561217757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106121bb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6122b87f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4a92505050565b915086826001845103815181106122cb57fe5b6020026020010151101561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237357fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af11580156123ba573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b8460008151811061243957fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d60208110156124d457600080fd5b50516124dc57fe5b61251b8287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061436b915050565b5095945050505050565b6000610f44848484614b85565b606081428110156125a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6126027f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f292505050565b9150868260008151811061261257fe5b6020026020010151111561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806153ea6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f44848484614ca9565b6000814281101561271457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b612743887f00000000000000000000000000000000000000000000000000000000000000008989893089612d65565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ed92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127bc57600080fd5b505afa1580156127d0573d6000803e3d6000fd5b505050506040513d60208110156127e657600080fd5b5051613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506113598483613ce9565b80428110156128f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061293657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4257600080fd5b505af1158015612a56573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ac87f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050506040513d6020811015612b5c57600080fd5b5051612b6457fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2d57600080fd5b505afa158015612c41573d6000803e3d6000fd5b505050506040513d6020811015612c5757600080fd5b50516040805160208981028281018201909352898252929350612c999290918a918a918291850190849080828437600092019190915250899250614780915050565b87611d368289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612ccc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b6000808242811015612dd857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000612e057f00000000000000000000000000000000000000000000000000000000000000008c8c6140b0565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050506040513d6020811015612eb057600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6040811015612f4d57600080fd5b50805160209091015190925090506000612f678e8e614d89565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa4578183612fa7565b82825b90975095508a871015613005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806155916026913960400191505060405180910390fd5b8986101561305e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061556b6026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484613f4a565b60008060006131107f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006140b0565b905060008761311f578c613141565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050506132038e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61329b8c8c8c8c8c8c614edc565b909450925060006132cd7f00000000000000000000000000000000000000000000000000000000000000008e8e6140b0565b90506132db8d33838861419b565b6132e78c33838761419b565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336657600080fd5b505af115801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61344a8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614edc565b9094509250600061349c7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006140b0565b90506134aa8b33838861419b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351257600080fd5b505af1158015613526573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d257600080fd5b505af11580156135e6573d6000803e3d6000fd5b505050506040513d60208110156135fc57600080fd5b505161360457fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b50519250348410156136c5576136c533853403613ce9565b505096509650969350505050565b6060814281101561374557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061378957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6138867f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f292505050565b9150348260008151811061389657fe5b602002602001015111156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806153ea6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061393e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b84600081518110613a0457fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7557600080fd5b505af1158015613a89573d6000803e3d6000fd5b505050506040513d6020811015613a9f57600080fd5b5051613aa757fe5b613ae68287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061436b915050565b81600081518110613af357fe5b602002602001015134111561251b5761251b3383600081518110613b1357fe5b60200260200101513403613ce9565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bf857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5a576040519150601f19603f3d011682016040523d82523d6000602084013e613c5f565b606091505b5091509150818015613c8d575080511580613c8d5750808060200190516020811015613c8a57600080fd5b50515b613ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061553e602d913960400191505060405180910390fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d6057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d23565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dc2576040519150601f19603f3d011682016040523d82523d6000602084013e613dc7565b606091505b5050905080613e21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806154426034913960400191505060405180910390fd5b505050565b6000808411613e80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806154eb602b913960400191505060405180910390fd5b600083118015613e905750600082115b613ee5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806155166028913960400191505060405180910390fd5b6000613ef9856103e563ffffffff6151dd16565b90506000613f0d828563ffffffff6151dd16565b90506000613f3383613f27886103e863ffffffff6151dd16565b9063ffffffff61526316565b9050808281613f3e57fe5b04979650505050505050565b6060600282511015613fbd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613fd557600080fd5b50604051908082528060200260200182016040528015613fff578160200160208202803683370190505b509050828160008151811061401057fe5b60200260200101818152505060005b60018351038110156140a8576000806140628786858151811061403e57fe5b602002602001015187866001018151811061405557fe5b60200260200101516152d5565b9150915061408484848151811061407557fe5b60200260200101518383613e26565b84846001018151811061409357fe5b6020908102919091010152505060010161401f565b509392505050565b60008060006140bf8585614d89565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061427957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161423c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142db576040519150601f19603f3d011682016040523d82523d6000602084013e6142e0565b606091505b509150915081801561430e57508051158061430e575080806020019051602081101561430b57600080fd5b50515b614363576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806154116031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156145ec5760008084838151811061438957fe5b60200260200101518584600101815181106143a057fe5b60200260200101519150915060006143b88383614d89565b50905060008785600101815181106143cc57fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461441457826000614418565b6000835b91509150600060028a5103881061442f5788614470565b6144707f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061446357fe5b60200260200101516140b0565b905061449d7f000000000000000000000000000000000000000000000000000000000000000088886140b0565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156144e7576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561457257818101518382015260200161455a565b50505050905090810190601f16801561459f5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156145c157600080fd5b505af11580156145d5573d6000803e3d6000fd5b50506001909901985061436e975050505050505050565b50505050565b606060028251101561466557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561467d57600080fd5b506040519080825280602002602001820160405280156146a7578160200160208202803683370190505b50905082816001835103815181106146bb57fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140a85760008061471b8786600186038151811061470757fe5b602002602001015187868151811061405557fe5b9150915061473d84848151811061472e57fe5b60200260200101518383614b85565b84600185038151811061474c57fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016146eb565b60005b6001835103811015613e215760008084838151811061479e57fe5b60200260200101518584600101815181106147b557fe5b60200260200101519150915060006147cd8383614d89565b50905060006147fd7f000000000000000000000000000000000000000000000000000000000000000085856140b0565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561484b57600080fd5b505afa15801561485f573d6000803e3d6000fd5b505050506040513d606081101561487557600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a8116908916146148bf5782846148c2565b83835b91509150614947828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b9550614954868383613e26565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149985782600061499c565b6000835b91509150600060028c51038a106149b3578a6149e7565b6149e77f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061446357fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614a97578181015183820152602001614a7f565b50505050905090810190601f168015614ac45780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614ae657600080fd5b505af1158015614afa573d6000803e3d6000fd5b50506001909b019a506147839950505050505050505050565b8082038281111561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614bdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806153be602c913960400191505060405180910390fd5b600083118015614bef5750600082115b614c44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806155166028913960400191505060405180910390fd5b6000614c686103e8614c5c868863ffffffff6151dd16565b9063ffffffff6151dd16565b90506000614c826103e5614c5c868963ffffffff614b1316565b9050614c9f6001828481614c9257fe5b049063ffffffff61526316565b9695505050505050565b6000808411614d03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154c66025913960400191505060405180910390fd5b600083118015614d135750600082115b614d68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806155166028913960400191505060405180910390fd5b82614d79858463ffffffff6151dd16565b81614d8057fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154a16025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614e4b578284614e4e565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614ed557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614f7c57600080fd5b505afa158015614f90573d6000803e3d6000fd5b505050506040513d6020811015614fa657600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561508c57604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b15801561505f57600080fd5b505af1158015615073573d6000803e3d6000fd5b505050506040513d602081101561508957600080fd5b50505b6000806150ba7f00000000000000000000000000000000000000000000000000000000000000008b8b6152d5565b915091508160001480156150cc575080155b156150dc578793508692506151d0565b60006150e9898484614ca9565b9050878111615156578581101561514b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061556b6026913960400191505060405180910390fd5b8894509250826151ce565b6000615163898486614ca9565b90508981111561516f57fe5b878110156151c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806155916026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b60008115806151f8575050808202828282816151f557fe5b04145b61139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006152e48585614d89565b5090506000806152f58888886140b0565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561533a57600080fd5b505afa15801561534e573d6000803e3d6000fd5b505050506040513d606081101561536457600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146153ab5780826153ae565b81815b9099909850965050505050505056fe4d61725844455856324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e544d6172584445585632526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534d61725844455856324c6962726172793a20494e53554646494349454e545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f425f414d4f554e544d6172584445585632526f757465723a20494e53554646494349454e545f415f414d4f554e54a2646970667358221220919085a70d99660138771c57d3468b71da65e6809fd0a21268d74247dd9d5be064736f6c63430006060033",
      "bin-runtime": "60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4c565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611364945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139a565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114d8565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611669565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ac565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119fe565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d97565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612105565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612525565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612532565b34801561096057600080fd5b50610969612671565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612695565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a2565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612882565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d65565b348015610b3157600080fd5b5061096961306f565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613093945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c0565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613218565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a7565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d3565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610e86897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d65565b9093509150610e96898685613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613ce9565b50965096945050505050565b6000610f44848484613e26565b949350505050565b60608142811015610fbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6111207f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4a92505050565b9150868260018451038151811061113357fe5b60200260200101511015611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b611257868660008181106111a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123d7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111f157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140b0565b8560008151811061124a57fe5b602002602001015161419b565b6112968287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061436b915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132057600080fd5b505af1158015611334573d6000803e3d6000fd5b50505050611359848360018551038151811061134c57fe5b6020026020010151613ce9565b509695505050505050565b60606113917f000000000000000000000000000000000000000000000000000000000000000084846145f2565b90505b92915050565b60008060006113ca7f00000000000000000000000000000000000000000000000000000000000000008f8f6140b0565b90506000876113d9578c6113fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149757600080fd5b505af11580156114ab573d6000803e3d6000fd5b505050506114be8f8f8f8f8f8f8f612d65565b809450819550505050509b509b9950505050505050505050565b6060814281101561154a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6115a87f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4a92505050565b915086826001845103815181106115bb57fe5b6020026020010151101561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b61162a868660008181106111a257fe5b6113598287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061436b915050565b606081428110156116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61183d7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f292505050565b9150868260008151811061184d57fe5b60200260200101511115611192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806153ea6027913960400191505060405180910390fd5b6000806118fa7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006140b0565b9050600086611909578b61192b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b505050506119ed8d8d8d8d8d8d6126a2565b9d9c50505050505050505050505050565b8042811015611a6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611afd85856000818110611a7e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121b57fe5b8a61419b565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d6020811015611bf057600080fd5b50516040805160208881028281018201909352888252929350611c32929091899189918291850190849080828437600092019190915250889250614780915050565b86611d368288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d6020811015611d2857600080fd5b50519063ffffffff614b1316565b1015611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b5050505050505050565b8042811015611e0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b611f1b85856000818110611a7e57fe5b611f59858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614780915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611fe957600080fd5b505afa158015611ffd573d6000803e3d6000fd5b505050506040513d602081101561201357600080fd5b5051905086811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050611d8d8482613ce9565b6060814281101561217757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106121bb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6122b87f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4a92505050565b915086826001845103815181106122cb57fe5b6020026020010151101561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615476602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237357fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af11580156123ba573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b8460008151811061243957fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d60208110156124d457600080fd5b50516124dc57fe5b61251b8287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061436b915050565b5095945050505050565b6000610f44848484614b85565b606081428110156125a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6126027f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f292505050565b9150868260008151811061261257fe5b6020026020010151111561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806153ea6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f44848484614ca9565b6000814281101561271457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b612743887f00000000000000000000000000000000000000000000000000000000000000008989893089612d65565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ed92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127bc57600080fd5b505afa1580156127d0573d6000803e3d6000fd5b505050506040513d60208110156127e657600080fd5b5051613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506113598483613ce9565b80428110156128f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061293657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4257600080fd5b505af1158015612a56573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ac87f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050506040513d6020811015612b5c57600080fd5b5051612b6457fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2d57600080fd5b505afa158015612c41573d6000803e3d6000fd5b505050506040513d6020811015612c5757600080fd5b50516040805160208981028281018201909352898252929350612c999290918a918a918291850190849080828437600092019190915250899250614780915050565b87611d368289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612ccc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b6000808242811015612dd857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000612e057f00000000000000000000000000000000000000000000000000000000000000008c8c6140b0565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050506040513d6020811015612eb057600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6040811015612f4d57600080fd5b50805160209091015190925090506000612f678e8e614d89565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa4578183612fa7565b82825b90975095508a871015613005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806155916026913960400191505060405180910390fd5b8986101561305e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061556b6026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484613f4a565b60008060006131107f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006140b0565b905060008761311f578c613141565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050506132038e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61329b8c8c8c8c8c8c614edc565b909450925060006132cd7f00000000000000000000000000000000000000000000000000000000000000008e8e6140b0565b90506132db8d33838861419b565b6132e78c33838761419b565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336657600080fd5b505af115801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61344a8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614edc565b9094509250600061349c7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006140b0565b90506134aa8b33838861419b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351257600080fd5b505af1158015613526573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d257600080fd5b505af11580156135e6573d6000803e3d6000fd5b505050506040513d60208110156135fc57600080fd5b505161360457fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b50519250348410156136c5576136c533853403613ce9565b505096509650969350505050565b6060814281101561374557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4d6172584445585632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061378957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d6172584445585632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6138867f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f292505050565b9150348260008151811061389657fe5b602002602001015111156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806153ea6027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061393e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b84600081518110613a0457fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7557600080fd5b505af1158015613a89573d6000803e3d6000fd5b505050506040513d6020811015613a9f57600080fd5b5051613aa757fe5b613ae68287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061436b915050565b81600081518110613af357fe5b602002602001015134111561251b5761251b3383600081518110613b1357fe5b60200260200101513403613ce9565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bf857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5a576040519150601f19603f3d011682016040523d82523d6000602084013e613c5f565b606091505b5091509150818015613c8d575080511580613c8d5750808060200190516020811015613c8a57600080fd5b50515b613ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061553e602d913960400191505060405180910390fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d6057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d23565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dc2576040519150601f19603f3d011682016040523d82523d6000602084013e613dc7565b606091505b5050905080613e21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806154426034913960400191505060405180910390fd5b505050565b6000808411613e80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806154eb602b913960400191505060405180910390fd5b600083118015613e905750600082115b613ee5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806155166028913960400191505060405180910390fd5b6000613ef9856103e563ffffffff6151dd16565b90506000613f0d828563ffffffff6151dd16565b90506000613f3383613f27886103e863ffffffff6151dd16565b9063ffffffff61526316565b9050808281613f3e57fe5b04979650505050505050565b6060600282511015613fbd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613fd557600080fd5b50604051908082528060200260200182016040528015613fff578160200160208202803683370190505b509050828160008151811061401057fe5b60200260200101818152505060005b60018351038110156140a8576000806140628786858151811061403e57fe5b602002602001015187866001018151811061405557fe5b60200260200101516152d5565b9150915061408484848151811061407557fe5b60200260200101518383613e26565b84846001018151811061409357fe5b6020908102919091010152505060010161401f565b509392505050565b60008060006140bf8585614d89565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061427957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161423c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142db576040519150601f19603f3d011682016040523d82523d6000602084013e6142e0565b606091505b509150915081801561430e57508051158061430e575080806020019051602081101561430b57600080fd5b50515b614363576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806154116031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156145ec5760008084838151811061438957fe5b60200260200101518584600101815181106143a057fe5b60200260200101519150915060006143b88383614d89565b50905060008785600101815181106143cc57fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461441457826000614418565b6000835b91509150600060028a5103881061442f5788614470565b6144707f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061446357fe5b60200260200101516140b0565b905061449d7f000000000000000000000000000000000000000000000000000000000000000088886140b0565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156144e7576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561457257818101518382015260200161455a565b50505050905090810190601f16801561459f5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156145c157600080fd5b505af11580156145d5573d6000803e3d6000fd5b50506001909901985061436e975050505050505050565b50505050565b606060028251101561466557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561467d57600080fd5b506040519080825280602002602001820160405280156146a7578160200160208202803683370190505b50905082816001835103815181106146bb57fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140a85760008061471b8786600186038151811061470757fe5b602002602001015187868151811061405557fe5b9150915061473d84848151811061472e57fe5b60200260200101518383614b85565b84600185038151811061474c57fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016146eb565b60005b6001835103811015613e215760008084838151811061479e57fe5b60200260200101518584600101815181106147b557fe5b60200260200101519150915060006147cd8383614d89565b50905060006147fd7f000000000000000000000000000000000000000000000000000000000000000085856140b0565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561484b57600080fd5b505afa15801561485f573d6000803e3d6000fd5b505050506040513d606081101561487557600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a8116908916146148bf5782846148c2565b83835b91509150614947828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b9550614954868383613e26565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149985782600061499c565b6000835b91509150600060028c51038a106149b3578a6149e7565b6149e77f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061446357fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614a97578181015183820152602001614a7f565b50505050905090810190601f168015614ac45780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614ae657600080fd5b505af1158015614afa573d6000803e3d6000fd5b50506001909b019a506147839950505050505050505050565b8082038281111561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614bdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806153be602c913960400191505060405180910390fd5b600083118015614bef5750600082115b614c44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806155166028913960400191505060405180910390fd5b6000614c686103e8614c5c868863ffffffff6151dd16565b9063ffffffff6151dd16565b90506000614c826103e5614c5c868963ffffffff614b1316565b9050614c9f6001828481614c9257fe5b049063ffffffff61526316565b9695505050505050565b6000808411614d03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154c66025913960400191505060405180910390fd5b600083118015614d135750600082115b614d68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806155166028913960400191505060405180910390fd5b82614d79858463ffffffff6151dd16565b81614d8057fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154a16025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614e4b578284614e4e565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614ed557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614f7c57600080fd5b505afa158015614f90573d6000803e3d6000fd5b505050506040513d6020811015614fa657600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561508c57604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b15801561505f57600080fd5b505af1158015615073573d6000803e3d6000fd5b505050506040513d602081101561508957600080fd5b50505b6000806150ba7f00000000000000000000000000000000000000000000000000000000000000008b8b6152d5565b915091508160001480156150cc575080155b156150dc578793508692506151d0565b60006150e9898484614ca9565b9050878111615156578581101561514b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061556b6026913960400191505060405180910390fd5b8894509250826151ce565b6000615163898486614ca9565b90508981111561516f57fe5b878110156151c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806155916026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b60008115806151f8575050808202828282816151f557fe5b04145b61139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006152e48585614d89565b5090506000806152f58888886140b0565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561533a57600080fd5b505afa15801561534e573d6000803e3d6000fd5b505050506040513d606081101561536457600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146153ab5780826153ae565b81815b9099909850965050505050505056fe4d61725844455856324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e544d6172584445585632526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534d61725844455856324c6962726172793a20494e53554646494349454e545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c65644d6172584445585632526f757465723a20494e53554646494349454e545f425f414d4f554e544d6172584445585632526f757465723a20494e53554646494349454e545f415f414d4f554e54a2646970667358221220919085a70d99660138771c57d3468b71da65e6809fd0a21268d74247dd9d5be064736f6c63430006060033",
      "srcmap": "370:18115:8:-:0;;;676:109;5:9:-1;2:2;;;27:1;24;17:12;2:2;676:109:8;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;676:109:8;;;;;;;-1:-1:-1;;;;;;738:18:8;;;;;;;;766:12;;;;;370:18115;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "370:18115:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;835:10;:18;849:4;835:18;;828:26;;;;370:18115;;12:1:-1;9;2:12;4894:653:8;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4894:653:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;4894:653:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17468:254;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17468:254:8;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17468:254:8;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11899:834;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11899:834:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;11899:834:8;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;11899:834:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;11899:834:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11899:834:8;;-1:-1:-1;11899:834:8;-1:-1:-1;11899:834:8;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11899:834:8;;;;;;;;;;;;;;;;;18238:245;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18238:245:8;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;18238:245:8;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;18238:245:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;18238:245:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;18238:245:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;18238:245:8;;-1:-1:-1;18238:245:8;;-1:-1:-1;;;;;18238:245:8:i;5552:663::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5552:663:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;5552:663:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9176:615::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9176:615:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;9176:615:8;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;9176:615:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;9176:615:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9176:615:8;;-1:-1:-1;9176:615:8;-1:-1:-1;9176:615:8;;;;;;;;;:::i;11082:812::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11082:812:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;11082:812:8;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;11082:812:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;11082:812:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11082:812:8;;-1:-1:-1;11082:812:8;-1:-1:-1;11082:812:8;;;;;;;;;:::i;7637:703::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7637:703:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;7637:703:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14877:698::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14877:698:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;14877:698:8;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;14877:698:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;14877:698:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;14877:698:8;;-1:-1:-1;14877:698:8;-1:-1:-1;14877:698:8;;;;;;;;;:::i;16413:822::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16413:822:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;16413:822:8;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;16413:822:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;16413:822:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;16413:822:8;;-1:-1:-1;16413:822:8;-1:-1:-1;16413:822:8;;;;;;;;;:::i;10394:683::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;10394:683:8;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;10394:683:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;10394:683:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10394:683:8;;-1:-1:-1;10394:683:8;-1:-1:-1;10394:683:8;;;;;;;;;:::i;17728:253::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17728:253:8;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17728:253:8;;;;;;;;;;;;:::i;9796:593::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9796:593:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;9796:593:8;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;9796:593:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;9796:593:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9796:593:8;;-1:-1:-1;9796:593:8;-1:-1:-1;9796:593:8;;;;;;;;;:::i;502:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;502:38:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17276:186;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17276:186:8;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17276:186:8;;;;;;;;;;;;:::i;6952:680::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6952:680:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;6952:680:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15580:828::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;15580:828:8;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;15580:828:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;15580:828:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;15580:828:8;;-1:-1:-1;15580:828:8;-1:-1:-1;15580:828:8;;;;;;;;;:::i;4040:849::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4040:849:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;4040:849:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;455:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;455:41:8;;;:::i;17987:245::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17987:245:8;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;17987:245:8;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;17987:245:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;17987:245:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;17987:245:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;17987:245:8;;-1:-1:-1;17987:245:8;;-1:-1:-1;;;;;17987:245:8:i;6220:656::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6220:656:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;6220:656:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2321:723::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2321:723:8;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;2321:723:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;3049:951;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;3049:951:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12738:794::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;12738:794:8;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;12738:794:8;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;12738:794:8;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;12738:794:8;;-1:-1:-1;12738:794:8;-1:-1:-1;12738:794:8;;;;;;;;;:::i;4894:653::-;5124:16;5142:14;5105:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5195:188:::1;5224:5;5243:4;5261:9;5284:14;5312:12;5346:4;5365:8;5195:15;:188::i;:::-;5168:215:::0;;-1:-1:-1;5168:215:8;-1:-1:-1;5393:51:8::1;5421:5:::0;5428:2;5168:215;5393:27:::1;:51::i;:::-;5460:4;5454:20;;;5475:9;5454:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;5454:31:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;5454:31:8;;;;5495:45;5526:2;5530:9;5495:30;:45::i;:::-;4894:653:::0;;;;;;;;;;:::o;17468:254::-;17616:14;17653:62;17683:8;17693:9;17704:10;17653:29;:62::i;:::-;17646:69;17468:254;-1:-1:-1;;;;17468:254:8:o;11899:834::-;12108:21;12081:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12153:29:::1;12178:4;12153:29;:4:::0;;12158:15;;;12153:21;;::::1;;;;;;;;;;;;;:29;;;12145:71;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;12236:55;12267:7;12276:8;12286:4;;12236:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;12236:30:8::1;::::0;-1:-1:-1;;;12236:55:8:i:1;:::-;12226:65;;12340:12;12309:7;12334:1;12317:7;:14;:18;12309:27;;;;;;;;;;;;;;:43;;12301:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12410:139;12455:4;;12460:1;12455:7;;;;;;;;;;;;;;;12464:10;12476:51;12501:7;12510:4;;12515:1;12510:7;;;;;;;;;;;;;;;12519:4;;12524:1;12519:7;;;;;;;;;;;;;;;12476:24;:51::i;:::-;12529:7;12537:1;12529:10;;;;;;;;;;;;;;12410:31;:139::i;:::-;12559:35;12565:7;12574:4;;12559:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;12588:4:8::1;::::0;-1:-1:-1;12559:5:8::1;::::0;-1:-1:-1;;12559:35:8:i:1;:::-;12610:4;12604:20;;;12625:7;12650:1;12633:7;:14;:18;12625:27;;;;;;;;;;;;;;12604:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;12604:49:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12604:49:8;;;;12663:63;12694:2;12698:7;12723:1;12706:7;:14;:18;12698:27;;;;;;;;;;;;;;12663:30;:63::i;:::-;11899:834:::0;;;;;;;;;:::o;18238:245::-;18377:21;18421:55;18451:7;18460:9;18471:4;18421:29;:55::i;:::-;18414:62;;18238:245;;;;;:::o;5552:663::-;5849:12;5863;5887;5902:49;5927:7;5936:6;5944;5902:24;:49::i;:::-;5887:64;;5961:10;5974;:33;;5998:9;5974:33;;;5992:2;5974:33;6017:80;;;;;;6045:10;6017:80;;;;6065:4;6017:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5961:46;;-1:-1:-1;6017:27:8;;;;;;:80;;;;;-1:-1:-1;;6017:80:8;;;;;;;;-1:-1:-1;6017:27:8;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;6017:80:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6017:80:8;;;;6128;6144:6;6152;6160:9;6171:10;6183;6195:2;6199:8;6128:15;:80::i;:::-;6107:101;;;;;;;;5552:663;;;;;;;;;;;;;;;;:::o;9176:615::-;9394:21;9375:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9437:55:::1;9468:7;9477:8;9487:4;;9437:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;9437:30:8::1;::::0;-1:-1:-1;;;9437:55:8:i:1;:::-;9427:65;;9541:12;9510:7;9535:1;9518:7;:14;:18;9510:27;;;;;;;;;;;;;;:43;;9502:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9611:139;9656:4;;9661:1;9656:7;;;;;;9611:139;9760:24;9766:7;9775:4;;9760:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;9781:2:8;;-1:-1:-1;9760:5:8::1;::::0;-1:-1:-1;;9760:24:8:i:1;11082:812::-:0;11291:21;11264:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11336:29:::1;11361:4;11336:29;:4:::0;;11341:15;;;11336:21;;::::1;;;;;;;;;;;;;:29;;;11328:71;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;11419:55;11449:7;11458:9;11469:4;;11419:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11419:29:8::1;::::0;-1:-1:-1;;;11419:55:8:i:1;:::-;11409:65;;11506:11;11492:7;11500:1;11492:10;;;;;;;;;;;;;;:25;;11484:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7637:703:::0;7947:14;7973:12;7988:46;8013:7;8022:5;8029:4;7988:24;:46::i;:::-;7973:61;;8044:10;8057;:33;;8081:9;8057:33;;;8075:2;8057:33;8100:80;;;;;;8128:10;8100:80;;;;8148:4;8100:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8044:46;;-1:-1:-1;8100:27:8;;;;;;:80;;;;;-1:-1:-1;;8100:80:8;;;;;;;;-1:-1:-1;8100:27:8;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;8100:80:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8100:80:8;;;;8202:131;8263:5;8270:9;8281:14;8297:12;8311:2;8315:8;8202:47;:131::i;:::-;8190:143;7637:703;-1:-1:-1;;;;;;;;;;;;;7637:703:8:o;14877:698::-;15105:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15125:137:::1;15170:4;;15175:1;15170:7;;;;;;;;;;;;;;;15179:10;15191:51;15216:7;15225:4;;15230:1;15225:7;;;;;;;;;;;;;;;15234:4;;15239:1;15234:7;;;;;;15191:51;15244:8;15125:31;:137::i;:::-;15272:18;15300:4:::0;;15305:15;;;15300:21;;::::1;;;;;;;;;;;;;15293:39;;;15333:2;15293:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;15293:43:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;15293:43:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;15293:43:8;15346:44:::1;::::0;;15293:43:::1;15346:44:::0;;::::1;::::0;;;;;;;;;;;15293:43;;-1:-1:-1;15346:44:8::1;::::0;;;15381:4;;;;;;15346:44;::::1;::::0;15381:4;;15346:44;15381:4;15346:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;15387:2:8;;-1:-1:-1;15346:34:8::1;::::0;-1:-1:-1;;15346:44:8:i:1;:::-;15487:12:::0;15421:62:::1;15469:13:::0;15428:4;;15433:15;;;15428:21;;::::1;;;;;;;;;;;;;15421:39;;;15461:2;15421:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;15421:43:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;15421:43:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;15421:43:8;;:62:::1;:47;:62;:::i;:::-;:78;;15400:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;662:1;14877:698:::0;;;;;;;:::o;16413:822::-;16670:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16702:29:::1;16727:4;16702:29;:4:::0;;16707:15;;;16702:21;;::::1;;;;;;;;;;;;;:29;;;16694:71;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;16775:137;16820:4;;16825:1;16820:7;;;;;;16775:137;16922:55;16957:4;;16922:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;16971:4:8::1;::::0;-1:-1:-1;16922:34:8::1;::::0;-1:-1:-1;;16922:55:8:i:1;:::-;17004:37;::::0;;;;;17035:4:::1;17004:37;::::0;::::1;::::0;;;16987:14:::1;::::0;17004:22:::1;17011:4;17004:22;::::0;::::1;::::0;:37;;;;;::::1;::::0;;;;;;;;;:22;:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;17004:37:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;17004:37:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;17004:37:8;;-1:-1:-1;17059:25:8;;::::1;;17051:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17148:4;17142:20;;;17163:9;17142:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;17142:31:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;17142:31:8;;;;17183:45;17214:2;17218:9;17183:30;:45::i;10394:683::-:0;10604:21;10577:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10660:4:::1;10649:15;;:4;;10654:1;10649:7;;;;;;;;;;;;;;;:15;;;10641:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10718:56;10749:7;10758:9;10769:4;;10718:56;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;10718:30:8::1;::::0;-1:-1:-1;;;10718:56:8:i:1;:::-;10708:66;;10823:12;10792:7;10817:1;10800:7;:14;:18;10792:27;;;;;;;;;;;;;;:43;;10784:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10899:4;10893:19;;;10920:7;10928:1;10920:10;;;;;;;;;;;;;;10893:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;10893:40:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;10893:40:8;;;;;10956:4;10950:20;;;10971:51;10996:7;11005:4;;11010:1;11005:7;;;;;;10971:51;11024:7;11032:1;11024:10;;;;;;;;;;;;;;10950:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;10950:85:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;10950:85:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;10950:85:8;10943:93:::1;;;;11046:24;11052:7;11061:4;;11046:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11067:2:8;;-1:-1:-1;11046:5:8::1;::::0;-1:-1:-1;;11046:24:8:i:1;:::-;10394:683:::0;;;;;;;;:::o;17728:253::-;17876:13;17912:62;17941:9;17952;17963:10;17912:28;:62::i;9796:593::-;10014:21;9995:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10057:55:::1;10087:7;10096:9;10107:4;;10057:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;10057:29:8::1;::::0;-1:-1:-1;;;10057:55:8:i:1;:::-;10047:65;;10144:11;10130:7;10138:1;10130:10;;;;;;;;;;;;;;:25;;10122:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;502:38:::0;;;:::o;17276:186::-;17373:12;17404:51;17427:7;17436:8;17446;17404:22;:51::i;6952:680::-;7211:14;7192:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7253:188:::1;7282:5;7301:4;7319:9;7342:14;7370:12;7404:4;7423:8;7253:15;:188::i;:::-;7490:38;::::0;;;;;7522:4:::1;7490:38;::::0;::::1;::::0;;;7237:204;;-1:-1:-1;7451:78:8::1;::::0;-1:-1:-1;7479:5:8;;7486:2;;7490:23:::1;::::0;::::1;::::0;::::1;::::0;:38;;;;;::::1;::::0;;;;;;;;;:23;:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;7490:38:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;7490:38:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;7490:38:8;7451:27:::1;:78::i;:::-;7545:4;7539:20;;;7560:9;7539:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;7539:31:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;7539:31:8;;;;7580:45;7611:2;7615:9;7580:30;:45::i;15580:828::-:0;15830:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15873:4:::1;15862:15;;:4;;15867:1;15862:7;;;;;;;;;;;;;;;:15;;;15854:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;15921:13;15937:9;15921:25;;15962:4;15956:19;;;15983:8;15956:38;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;15956:38:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;15956:38:8;;;;;16017:4;16011:20;;;16032:51;16057:7;16066:4;;16071:1;16066:7;;;;;;16032:51;16085:8;16011:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;16011:83:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;16011:83:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;16011:83:8;16004:91:::1;;;;16105:18;16133:4:::0;;16138:15;;;16133:21;;::::1;;;;;;;;;;;;;16126:39;;;16166:2;16126:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;16126:43:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;16126:43:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;16126:43:8;16179:44:::1;::::0;;16126:43:::1;16179:44:::0;;::::1;::::0;;;;;;;;;;;16126:43;;-1:-1:-1;16179:44:8::1;::::0;;;16214:4;;;;;;16179:44;::::1;::::0;16214:4;;16179:44;16214:4;16179:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;16220:2:8;;-1:-1:-1;16179:34:8::1;::::0;-1:-1:-1;;16179:44:8:i:1;:::-;16320:12:::0;16254:62:::1;16302:13:::0;16261:4;;16266:15;;;16261:21;;::::1;;;;;;;;;;;;;16254:39;;;16294:2;16254:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;4040:849:8::0;4286:12;4300;4267:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4324:12:::1;4339:49;4364:7;4373:6;4381;4339:24;:49::i;:::-;4398:62;::::0;;;;;4432:10:::1;4398:62;::::0;::::1;::::0;:33:::1;::::0;::::1;:62:::0;;;;;;;;;;;;;;4324:64;;-1:-1:-1;4398:33:8;;::::1;::::0;:62;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;4398:33:8;:62;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;4398:62:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4398:62:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;4527:29:8::1;::::0;;;;;:25:::1;:29:::0;;::::1;;::::0;::::1;::::0;;;4497:12:::1;::::0;;;4527:25;;::::1;::::0;::::1;::::0;:29;;;;;;;;;;;4497:12;4527:25;:29;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;4527:29:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4527:29:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;4527:29:8;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;4527:29:8;-1:-1:-1;4567:14:8::1;4586:43;4614:6:::0;4622;4586:27:::1;:43::i;:::-;4566:63;;;4670:6;4660:16;;:6;:16;;;:58;;4701:7;4710;4660:58;;;4680:7;4689;4660:58;4639:79:::0;;-1:-1:-1;4639:79:8;-1:-1:-1;4736:21:8;;::::1;;4728:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4829:10;4818:7;:21;;4810:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;662:1;;;;4040:849:::0;;;;;;;;;;;:::o;455:41::-;;;:::o;17987:245::-;18126:21;18170:55;18201:7;18210:8;18220:4;18170:30;:55::i;6220:656::-;6501:16;6519:14;6545:12;6560:46;6585:7;6594:5;6601:4;6560:24;:46::i;:::-;6545:61;;6616:10;6629;:33;;6653:9;6629:33;;;6647:2;6629:33;6672:80;;;;;;6700:10;6672:80;;;;6720:4;6672:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6616:46;;-1:-1:-1;6672:27:8;;;;;;:80;;;;;-1:-1:-1;;6672:80:8;;;;;;;;-1:-1:-1;6672:27:8;:80;;;2:2:-1;;;;27:1;24;17:12;2:2;6672:80:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6672:80:8;;;;6789;6808:5;6815:9;6826:14;6842:12;6856:2;6860:8;6789:18;:80::i;:::-;6762:107;;;;-1:-1:-1;6220:656:8;-1:-1:-1;;;;;;;;;;;;;6220:656:8:o;2321:723::-;2600:12;2614;2628:14;2581:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2675:85:::1;2689:6;2697;2705:14;2721;2737:10;2749;2675:13;:85::i;:::-;2654:106:::0;;-1:-1:-1;2654:106:8;-1:-1:-1;2770:12:8::1;2785:49;2810:7;2819:6:::0;2827;2785:24:::1;:49::i;:::-;2770:64;;2844:66;2876:6;2884:10;2896:4;2902:7;2844:31;:66::i;:::-;2920;2952:6;2960:10;2972:4;2978:7;2920:31;:66::i;:::-;3023:4;3008:25;;;3034:2;3008:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3008:29:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3008:29:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3008:29:8;2321:723;;;;-1:-1:-1;3008:29:8;;-1:-1:-1;2321:723:8;;-1:-1:-1;;;;;;;;;2321:723:8:o;3049:951::-;3295:16;3313:14;3329;3276:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3382:169:::1;3409:5;3428:4;3446:18;3478:9;3501:14;3529:12;3382:13;:169::i;:::-;3355:196:::0;;-1:-1:-1;3355:196:8;-1:-1:-1;3561:12:8::1;3576:46;3601:7;3610:5:::0;3617:4:::1;3576:24;:46::i;:::-;3561:61;;3632:69;3664:5;3671:10;3683:4;3689:11;3632:31;:69::i;:::-;3717:4;3711:19;;;3738:9;3711:39;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3711:39:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3711:39:8;;;;;3773:4;3767:20;;;3788:4;3794:9;3767:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3767:37:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3767:37:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3767:37:8;3760:45:::1;;;;3842:4;3827:25;;;3853:2;3827:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3827:29:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3827:29:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3827:29:8;;-1:-1:-1;3905:9:8::1;:21:::0;-1:-1:-1;3901:92:8::1;;;3928:65;3959:10;3983:9;3971;:21;3928:30;:65::i;:::-;662:1;3049:951:::0;;;;;;;;;;;:::o;12738:794::-;12945:21;12918:8;608:15;596:8;:27;;588:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13001:4:::1;12990:15;;:4;;12995:1;12990:7;;;;;;;;;;;;;;;:15;;;12982:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;13059:55;13089:7;13098:9;13109:4;;13059:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;13059:29:8::1;::::0;-1:-1:-1;;;13059:55:8:i:1;:::-;13049:65;;13146:9;13132:7;13140:1;13132:10;;;;;;;;;;;;;;:23;;13124:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13215:4;13209:19;;;13236:7;13244:1;13236:10;;;;;;;;;;;;;;13209:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;13209:40:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;13209:40:8;;;;;13272:4;13266:20;;;13287:51;13312:7;13321:4;;13326:1;13321:7;;;;;;13287:51;13340:7;13348:1;13340:10;;;;;;;;;;;;;;13266:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;13266:85:8;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;13266:85:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;13266:85:8;13259:93:::1;;;;13362:24;13368:7;13377:4;;13362:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;13383:2:8;;-1:-1:-1;13362:5:8::1;::::0;-1:-1:-1;;13362:24:8:i:1;:::-;13447:7;13455:1;13447:10;;;;;;;;;;;;;;13435:9;:22;13431:94;;;13459:66;13490:10;13514:7;13522:1;13514:10;;;;;;;;;;;;;;13502:9;:22;13459:30;:66::i;652:438:4:-:0;878:45;;;867:10;878:45;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;878:45:4;;;;;;;25:18:-1;;61:17;;96:58;182:15;878:45:4;179:29:-1;160:49;;867:57:4;;;;832:12;;846:17;;867:10;;;;878:45;867:57;;;25:18:-1;867:57:4;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;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:4;;;;;;;;;;;;;;;;;;;;;;;;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:4;;;;955:7;:57;;;;-1:-1:-1;967:11:4;;: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:4;967:44;934:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:438;;;;;:::o;1588:214::-;1700:12;;;1660;1700;;;;;;;;;1678:7;;;;1693:5;;1678:35;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;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:4;;;;;;;;;;;;;;;;;;;;;;;;;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:4;;;1731:7;1723:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1588:214;;;:::o;2183:510:17:-;2276:14;2321:1;2310:8;:12;2302:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2400:1;2388:9;:13;:31;;;;;2418:1;2405:10;:14;2388:31;2380:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2474:20;2497:17;:8;2510:3;2497:17;:12;:17;:::i;:::-;2474:40;-1:-1:-1;2524:14:17;2541:31;2474:40;2561:10;2541:31;:19;:31;:::i;:::-;2524:48;-1:-1:-1;2582:16:17;2601:40;2625:15;2601:19;:9;2615:4;2601:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;2582:59;;2675:11;2663:9;:23;;;;;;;2183:510;-1:-1:-1;;;;;;;2183:510:17:o;3356:503::-;3457:21;3513:1;3498:4;:11;:16;;3490:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3580:4;:11;3569:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3569:23:17;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;3569:23:17;;3559:33;;3615:8;3602:7;3610:1;3602:10;;;;;;;;;;;;;:21;;;;;3638:6;3633:220;3664:1;3650:4;:11;:15;3646:1;:19;3633:220;;;3687:14;3703:15;3722:42;3734:7;3743:4;3748:1;3743:7;;;;;;;;;;;;;;3752:4;3757:1;3761;3757:5;3752:11;;;;;;;;;;;;;;3722;:42::i;:::-;3686:78;;;;3795:47;3808:7;3816:1;3808:10;;;;;;;;;;;;;;3820:9;3831:10;3795:12;:47::i;:::-;3778:7;3786:1;3790;3786:5;3778:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;3667:3:17;;3633:220;;;;3356:503;;;;;:::o;725:470::-;814:12;839:14;855;873:26;884:6;892;873:10;:26::i;:::-;1033:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1033:32:17;;;;;1023:43;;;;;;939:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;939:246:17;;;;;;;929:257;;;;;;;;;725:470;-1:-1:-1;;;;;725:470:17:o;1096:486:4:-;1360:51;;;1349:10;1360:51;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1360:51:4;;;;;;;25:18:-1;;61:17;;96:58;182:15;1360:51:4;179:29:-1;160:49;;1349:63:4;;;;1314:12;;1328:17;;1349:10;;;;1360:51;1349:63;;;25:18:-1;1349:63:4;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;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;;;1349:63:4;;;;;;;;;;;;;;;;;;;;;;;;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;;1313:99:4;;;;1443:7;:57;;;;-1:-1:-1;1455:11:4;;:16;;:44;;;1486:4;1475:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1475:24:4;1455:44;1422:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1096:486;;;;;;:::o;8447:724:8:-;8553:6;8548:617;8579:1;8565:4;:11;:15;8561:1;:19;8548:617;;;8602:13;8617:14;8636:4;8641:1;8636:7;;;;;;;;;;;;;;8645:4;8650:1;8654;8650:5;8645:11;;;;;;;;;;;;;;8601:56;;;;8672:14;8691:42;8719:5;8726:6;8691:27;:42::i;:::-;8671:62;;;8747:14;8764:7;8772:1;8776;8772:5;8764:14;;;;;;;;;;;;;;8747:31;;8793:15;8810;8838:6;8829:15;;:5;:15;;;:61;;8871:9;8887:1;8829:61;;;8853:1;8857:9;8829:61;8792:98;;;;8904:10;8935:1;8921:4;:11;:15;8917:1;:19;:82;;8996:3;8917:82;;;8939:54;8964:7;8973:6;8981:4;8986:1;8990;8986:5;8981:11;;;;;;;;;;;;;;8939:24;:54::i;:::-;8904:95;;9028:48;9053:7;9062:5;9069:6;9028:24;:48::i;:::-;9013:69;;;9100:10;9112;9124:2;9138:1;9128:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;9128:12:8;87:42:-1;143:17;;-1:-1;9128:12:8;;9013:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9013:141:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9013:141:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8582:3:8;;;;;-1:-1:-1;8548:617:8;;-1:-1:-1;;;;;;;;8548:617:8;;;8447:724;;;:::o;3937:524:17:-;4038:21;4094:1;4079:4;:11;:16;;4071:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4161:4;:11;4150:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4150:23:17;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;4150:23:17;;4140:33;;4213:9;4183:7;4208:1;4191:7;:14;:18;4183:27;;;;;;;;;;;;;;;;;:39;4246:11;;:15;;4232:223;4263:5;;4232:223;;4290:14;4306:15;4325:42;4337:7;4346:4;4355:1;4351;:5;4346:11;;;;;;;;;;;;;;4359:4;4364:1;4359:7;;;;;;;4325:42;4289:78;;;;4398:46;4410:7;4418:1;4410:10;;;;;;;;;;;;;;4422:9;4433:10;4398:11;:46::i;:::-;4381:7;4393:1;4389;:5;4381:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;4270:3:17;;4232:223;;13675:1197:8;13787:6;13782:1084;13813:1;13799:4;:11;:15;13795:1;:19;13782:1084;;;13836:13;13851:14;13870:4;13875:1;13870:7;;;;;;;;;;;;;;13879:4;13884:1;13888;13884:5;13879:11;;;;;;;;;;;;;;13835:56;;;;13906:14;13925:42;13953:5;13960:6;13925:27;:42::i;:::-;13905:62;;;13981:19;14018:48;14043:7;14052:5;14059:6;14018:24;:48::i;:::-;13981:86;;14081:16;14111:17;14197:13;14212;14230:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14230:18:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14230:18:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14230:18:8;;;;;;;14196:52;;;;;-1:-1:-1;14196:52:8;;-1:-1:-1;14263:17:8;;14304:15;;;;;;;;:61;;14346:8;14356;14304:61;;;14323:8;14333;14304:61;14262:103;;;;14393:56;14436:12;14400:5;14393:23;;;14425:4;14393:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;14393:56:8;14379:70;;14478:71;14508:11;14521:12;14535:13;14478:29;:71::i;:::-;14463:86;;13782:1084;;;;14578:15;14595;14623:6;14614:15;;:5;:15;;;:67;;14659:12;14678:1;14614:67;;;14638:1;14642:12;14614:67;14577:104;;;;14695:10;14726:1;14712:4;:11;:15;14708:1;:19;:82;;14787:3;14708:82;;;14730:54;14755:7;14764:6;14772:4;14777:1;14781;14777:5;14772:11;;;;;;;14730:54;14842:12;;;14852:1;14842:12;;;;;;;;;;14804:51;;;;;;;;;;;;;;;:9;:51;;;;;;;;;;;;;;;;;;;;;;14695:95;;-1:-1:-1;14804:9:8;;;;;;14814:10;;14826;;14695:95;;14842:12;;14804:51;;;;;;;;14842:12;;14804:51;;;;14842:12;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14804:51:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14804:51:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;13816:3:8;;;;;-1:-1:-1;13782:1084:8;;-1:-1:-1;;;;;;;;;;13782:1084:8;286:127:20;369:5;;;364:16;;;;356:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2811:466:17;2904:13;2949:1;2937:9;:13;2929:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3029:1;3017:9;:13;:31;;;;;3047:1;3034:10;:14;3017:31;3009:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3103:14;3120:34;3149:4;3120:24;:9;3134;3120:24;:13;:24;:::i;:::-;:28;:34;:28;:34;:::i;:::-;3103:51;-1:-1:-1;3164:16:17;3183:34;3213:3;3183:25;:10;3198:9;3183:25;:14;:25;:::i;:34::-;3164:53;;3238:32;3268:1;3251:11;3239:9;:23;;;;;;;3238:32;:29;:32;:::i;:::-;3227:43;2811:466;-1:-1:-1;;;;;;2811:466:17:o;1747:317::-;1829:12;1871:1;1861:7;:11;1853:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1943:1;1932:8;:12;:28;;;;;1959:1;1948:8;:12;1932:28;1924:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2049:8;2025:21;:7;2037:8;2025:21;:11;:21;:::i;:::-;:32;;;;;;;1747:317;-1:-1:-1;;;;1747:317:17:o;291:345::-;366:14;382;426:6;416:16;;:6;:16;;;;408:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:6;503:15;;:6;:15;;;:53;;541:6;549;503:53;;;522:6;530;503:53;484:72;;-1:-1:-1;484:72:17;-1:-1:-1;574:20:17;;;566:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:345;;;;;:::o;953:1363:8:-;1257:50;;;;;;:64;:50;;;;;;;;;;;;;;;;1164:12;;;;;;1275:7;1257:34;;;;;;:50;;;;;;;;;;;;;;;:34;:50;;;2:2:-1;;;;27:1;24;17:12;2:2;1257:50:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1257:50:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1257:50:8;:64;;;1253:148;;;1337:53;;;;;;:37;:53;;;;;;;;;;;;;;;;1355:7;1337:37;;;;;;:53;;;;;;;;;;;;;;;-1:-1:-1;1337:37:8;:53;;;2:2:-1;;;;27:1;24;17:12;2:2;1337:53:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1337:53:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;1253:148:8;1411:13;1426;1443:53;1472:7;1481:6;1489;1443:28;:53::i;:::-;1410:86;;;;1510:8;1522:1;1510:13;:30;;;;-1:-1:-1;1527:13:8;;1510:30;1506:804;;;1578:14;;-1:-1:-1;1594:14:8;;-1:-1:-1;1506:804:8;;;1640:19;1662:58;1685:14;1701:8;1711;1662:22;:58::i;:::-;1640:80;;1756:14;1738;:32;1734:566;;1816:10;1798:14;:28;;1790:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1909:14;;-1:-1:-1;1925:14:8;-1:-1:-1;1925:14:8;1734:566;;;1979:19;2001:58;2024:14;2040:8;2050;2001:22;:58::i;:::-;1979:80;;2102:14;2084;:32;;2077:40;;;;2161:10;2143:14;:28;;2135:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:14;-1:-1:-1;2270:14:8;;-1:-1:-1;1734:566:8;1506:804;;953:1363;;;;;;;;;;;:::o;419:140:20:-;471:6;497;;;:30;;-1:-1:-1;;512:5:20;;;526:1;521;512:5;521:1;507:15;;;;;:20;497:30;489:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;154:126;237:5;;;232:16;;;;224:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1250:387:17;1343:13;1358;1384:14;1403:26;1414:6;1422;1403:10;:26::i;:::-;1383:46;;;1440:13;1455;1488:32;1496:7;1505:6;1513;1488:7;:32::i;:::-;1473:60;;;:62;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1473:62:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1473:62:17;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1473:62:17;;;;;;;1439:96;;;;;-1:-1:-1;1439:96:17;;-1:-1:-1;1568:16:17;;;;;;;;:62;;1611:8;1621;1568:62;;;1588:8;1598;1568:62;1545:85;;;;-1:-1:-1;1250:387:17;-1:-1:-1;;;;;;;1250:387:17:o"
    },
    "contracts/examples/ExampleComputeLiquidityValue.sol:ExampleComputeLiquidityValue": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "factory_",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityAmount",
              "type": "uint256"
            }
          ],
          "name": "getGasCostOfGetLiquidityValueAfterArbitrageToPrice",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityAmount",
              "type": "uint256"
            }
          ],
          "name": "getLiquidityValue",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "tokenAAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenBAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityAmount",
              "type": "uint256"
            }
          ],
          "name": "getLiquidityValueAfterArbitrageToPrice",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "tokenAAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenBAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenB",
              "type": "uint256"
            }
          ],
          "name": "getReservesAfterArbitrage",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "reserveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveB",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60a060405234801561001057600080fd5b506040516114043803806114048339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b031661138961007b600039806101fa5280610238528061027b52806102b952806102e352506113896000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806380caa3531161005057806380caa3531461011d578063c45a01551461017e578063d9b7a6e7146101af57610067565b80633558e94c1461006c57806369a2fcbd146100ce575b600080fd5b6100b56004803603608081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604081013590606001356101f2565b6040805192835260208301919091528051918290030190f35b6100b5600480360360a08110156100e457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060800135610230565b61016c600480360360a081101561013357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060800135610270565b60408051918252519081900360200190f35b6101866102b7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b5600480360360608110156101c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356102db565b6000806102227f000000000000000000000000000000000000000000000000000000000000000087878787610316565b915091505b94509492505050565b6000806102617f000000000000000000000000000000000000000000000000000000000000000088888888886103f5565b915091505b9550959350505050565b6000805a90506102a47f000000000000000000000000000000000000000000000000000000000000000088888888886103f5565b505060005a909103979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008061030a7f0000000000000000000000000000000000000000000000000000000000000000868686610641565b91509150935093915050565b600080610324878787610824565b909250905081158015906103385750600081115b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180611288602d913960400191505060405180910390fd5b60008061039c8686868661090c565b9150915080600014156103b157506102669050565b81156103d25760006103c48286866109f7565b9482019490930392506103e9565b60006103df8285876109f7565b9094039350918201915b50509550959350505050565b60008060008073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561045757600080fd5b505afa15801561046b573d6000803e3d6000fd5b505050506040513d602081101561048157600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161415905060006104aa8a8a8a610b1b565b90506000826104ba57600061052d565b8173ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561050057600080fd5b505afa158015610514573d6000803e3d6000fd5b505050506040513d602081101561052a57600080fd5b50515b905060008273ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d60208110156105a157600080fd5b505190508681108015906105b55750600087115b61060a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061132d6027913960400191505060405180910390fd5b60008061061a8e8e8e8e8e610316565b9150915061062c8282858c8a89610c06565b97509750505050505050965096945050505050565b600080600080610652888888610824565b915091506000610663898989610b1b565b905060008073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156106c457600080fd5b505afa1580156106d8573d6000803e3d6000fd5b505050506040513d60208110156106ee57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161415905060008161071857600061078b565b8273ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561075e57600080fd5b505afa158015610772573d6000803e3d6000fd5b505050506040513d602081101561078857600080fd5b50515b905060008373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d557600080fd5b505afa1580156107e9573d6000803e3d6000fd5b505050506040513d60208110156107ff57600080fd5b505190506108118686838c8787610c06565b9750975050505050505094509492505050565b60008060006108338585610cdf565b509050600080610844888888610b1b565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561088957600080fd5b505afa15801561089d573d6000803e3d6000fd5b505050506040513d60608110156108b357600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146108fa5780826108fd565b81815b90999098509650505050505050565b6000808561091b858786610e32565b1091506000610930858563ffffffff610f0716565b9050600061098261097d61094c846103e863ffffffff610f0716565b866109575789610959565b8a5b6109786103e58961096a578d61096c565b8c5b9063ffffffff610f0716565b610e32565b610f93565b905060006103e5856109a5576109a0876103e863ffffffff610f0716565b6109b7565b6109b7886103e863ffffffff610f0716565b816109be57fe5b049050808210156109d9575060009350839250610227915050565b6109e9828263ffffffff6110e816565b935050505094509492505050565b6000808411610a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806112da602b913960400191505060405180910390fd5b600083118015610a615750600082115b610ab6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806113056028913960400191505060405180910390fd5b6000610aca856103e563ffffffff610f0716565b90506000610ade828563ffffffff610f0716565b90506000610b0483610af8886103e863ffffffff610f0716565b9063ffffffff61115a16565b9050808281610b0f57fe5b04979650505050505050565b6000806000610b2a8585610cdf565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080838015610c165750600083115b15610c9e576000610c3061097d8a8a63ffffffff610f0716565b90506000610c3d85610f93565b905080821115610c9b57876000610c5a848463ffffffff6110e816565b90506000610c7384610af887600563ffffffff610f0716565b90506000610c82848484610e32565b9050610c948c8263ffffffff61115a16565b9b50505050505b50505b85610caf898763ffffffff610f0716565b81610cb657fe5b0486610cc8898863ffffffff610f0716565b81610ccf57fe5b0491509150965096945050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806112b56025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610da1578284610da4565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610e2b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000806000610e4186866111cc565b9150915060008480610e4f57fe5b868809905082811115610e63576001820391505b918290039181610e8157848381610e7657fe5b049350505050610f00565b848210610eef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610efa838387611217565b93505050505b9392505050565b6000811580610f2257505080820282828281610f1f57fe5b04145b610f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b600081610fa2575060006110e3565b8160017001000000000000000000000000000000008210610fc85760809190911c9060401b5b680100000000000000008210610fe35760409190911c9060201b5b6401000000008210610ffa5760209190911c9060101b5b62010000821061100f5760109190911c9060081b5b61010082106110235760089190911c9060041b5b601082106110365760049190911c9060021b5b600882106110425760011b5b600181858161104d57fe5b048201901c9050600181858161105f57fe5b048201901c9050600181858161107157fe5b048201901c9050600181858161108357fe5b048201901c9050600181858161109557fe5b048201901c905060018185816110a757fe5b048201901c905060018185816110b957fe5b048201901c905060008185816110cb57fe5b0490508082106110db57806110dd565b815b93505050505b919050565b80820382811115610f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b80820182811015610f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8486099050838502925082810391508281101561120f576001820391505b509250929050565b6000818103821680838161122757fe5b04925080858161123357fe5b04945080816000038161124257fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fe4d61725844455856324172626974726167654c6962726172793a205a45524f5f504149525f52455345525645534d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534d61725844455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f4c4951554944495459436f6d707574654c697175696469747956616c75653a204c49515549444954595f414d4f554e54a2646970667358221220dcb83611deeb4c1f711018c68d3f3c406735731746d9ac0106134b62cdfaf00264736f6c63430006060033",
          "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1404 CODESIZE SUB DUP1 PUSH2 0x1404 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP2 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1389 PUSH2 0x7B PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1FA MSTORE DUP1 PUSH2 0x238 MSTORE DUP1 PUSH2 0x27B MSTORE DUP1 PUSH2 0x2B9 MSTORE DUP1 PUSH2 0x2E3 MSTORE POP PUSH2 0x1389 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80CAA353 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x80CAA353 EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x17E JUMPI DUP1 PUSH4 0xD9B7A6E7 EQ PUSH2 0x1AF JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x3558E94C EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x69A2FCBD EQ PUSH2 0xCE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1F2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0xB5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x230 JUMP JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x270 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x186 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2DB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x222 PUSH32 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x316 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x261 PUSH32 0x0 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x3F5 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x2A4 PUSH32 0x0 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x3F5 JUMP JUMPDEST POP POP PUSH1 0x0 GAS SWAP1 SWAP2 SUB SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x30A PUSH32 0x0 DUP7 DUP7 DUP7 PUSH2 0x641 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x324 DUP8 DUP8 DUP8 PUSH2 0x824 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x338 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x38D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1288 PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x39C DUP7 DUP7 DUP7 DUP7 PUSH2 0x90C JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP1 PUSH1 0x0 EQ ISZERO PUSH2 0x3B1 JUMPI POP PUSH2 0x266 SWAP1 POP JUMP JUMPDEST DUP2 ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 PUSH2 0x3C4 DUP3 DUP7 DUP7 PUSH2 0x9F7 JUMP JUMPDEST SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP4 SUB SWAP3 POP PUSH2 0x3E9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DF DUP3 DUP6 DUP8 PUSH2 0x9F7 JUMP JUMPDEST SWAP1 SWAP5 SUB SWAP4 POP SWAP2 DUP3 ADD SWAP2 JUMPDEST POP POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x46B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP PUSH1 0x0 PUSH2 0x4AA DUP11 DUP11 DUP11 PUSH2 0xB1B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x4BA JUMPI PUSH1 0x0 PUSH2 0x52D JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7464FC3D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x514 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x58B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP7 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x5B5 JUMPI POP PUSH1 0x0 DUP8 GT JUMPDEST PUSH2 0x60A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x132D PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x61A DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0x316 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x62C DUP3 DUP3 DUP6 DUP13 DUP11 DUP10 PUSH2 0xC06 JUMP JUMPDEST SWAP8 POP SWAP8 POP POP POP POP POP POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x652 DUP9 DUP9 DUP9 PUSH2 0x824 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x663 DUP10 DUP10 DUP10 PUSH2 0xB1B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x718 JUMPI PUSH1 0x0 PUSH2 0x78B JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7464FC3D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x75E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x772 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x811 DUP7 DUP7 DUP4 DUP13 DUP8 DUP8 PUSH2 0xC06 JUMP JUMPDEST SWAP8 POP SWAP8 POP POP POP POP POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x833 DUP6 DUP6 PUSH2 0xCDF JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x844 DUP9 DUP9 DUP9 PUSH2 0xB1B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x889 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x89D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x8FA JUMPI DUP1 DUP3 PUSH2 0x8FD JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH2 0x91B DUP6 DUP8 DUP7 PUSH2 0xE32 JUMP JUMPDEST LT SWAP2 POP PUSH1 0x0 PUSH2 0x930 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x982 PUSH2 0x97D PUSH2 0x94C DUP5 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST DUP7 PUSH2 0x957 JUMPI DUP10 PUSH2 0x959 JUMP JUMPDEST DUP11 JUMPDEST PUSH2 0x978 PUSH2 0x3E5 DUP10 PUSH2 0x96A JUMPI DUP14 PUSH2 0x96C JUMP JUMPDEST DUP13 JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST PUSH2 0xE32 JUMP JUMPDEST PUSH2 0xF93 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3E5 DUP6 PUSH2 0x9A5 JUMPI PUSH2 0x9A0 DUP8 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST PUSH2 0x9B7 JUMP JUMPDEST PUSH2 0x9B7 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST DUP2 PUSH2 0x9BE JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x9D9 JUMPI POP PUSH1 0x0 SWAP4 POP DUP4 SWAP3 POP PUSH2 0x227 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9E9 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x10E8 AND JUMP JUMPDEST SWAP4 POP POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0xA51 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12DA PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0xA61 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0xAB6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1305 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xACA DUP6 PUSH2 0x3E5 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xADE DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB04 DUP4 PUSH2 0xAF8 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x115A AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0xB0F JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xB2A DUP6 DUP6 PUSH2 0xCDF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x236595447338C75B512D89A54E3B5160E3A38C8FFE13F0E88C634CA037665806 PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP1 ISZERO PUSH2 0xC16 JUMPI POP PUSH1 0x0 DUP4 GT JUMPDEST ISZERO PUSH2 0xC9E JUMPI PUSH1 0x0 PUSH2 0xC30 PUSH2 0x97D DUP11 DUP11 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC3D DUP6 PUSH2 0xF93 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xC9B JUMPI DUP8 PUSH1 0x0 PUSH2 0xC5A DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x10E8 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC73 DUP5 PUSH2 0xAF8 DUP8 PUSH1 0x5 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC82 DUP5 DUP5 DUP5 PUSH2 0xE32 JUMP JUMPDEST SWAP1 POP PUSH2 0xC94 DUP13 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x115A AND JUMP JUMPDEST SWAP12 POP POP POP POP POP JUMPDEST POP POP JUMPDEST DUP6 PUSH2 0xCAF DUP10 DUP8 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST DUP2 PUSH2 0xCB6 JUMPI INVALID JUMPDEST DIV DUP7 PUSH2 0xCC8 DUP10 DUP9 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST DUP2 PUSH2 0xCCF JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xD67 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12B5 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xDA1 JUMPI DUP3 DUP5 PUSH2 0xDA4 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xE2B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xE41 DUP7 DUP7 PUSH2 0x11CC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xE4F JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xE63 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0xE81 JUMPI DUP5 DUP4 DUP2 PUSH2 0xE76 JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0xF00 JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0xEEF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xEFA DUP4 DUP4 DUP8 PUSH2 0x1217 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xF22 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xF1F JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xF8D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xFA2 JUMPI POP PUSH1 0x0 PUSH2 0x10E3 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0xFC8 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0xFE3 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0xFFA JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x100F JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x1023 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x1036 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x1042 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x104D JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x105F JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1071 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1083 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1095 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x10A7 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x10B9 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x10CB JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x10DB JUMPI DUP1 PUSH2 0x10DD JUMP JUMPDEST DUP2 JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xF8D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xF8D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0x120F JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0x1227 JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0x1233 JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0x1242 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP INVALID 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN COINBASE PUSH19 0x626974726167654C6962726172793A205A4552 0x4F 0x5F POP COINBASE 0x49 MSTORE 0x5F MSTORE GASLIMIT MSTORE8 GASLIMIT MSTORE JUMP GASLIMIT MSTORE8 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494445 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE NUMBER PUSH16 0x6D707574654C69717569646974795661 PUSH13 0x75653A204C4951554944495459 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0xB8 CALLDATASIZE GT 0xDE 0xEB 0x4C 0x1F PUSH18 0x1018C68D3F3C406735731746D9AC0106134B PUSH3 0xCDFAF0 MUL PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "83:2433:9:-:0;;;199:72;5:9:-1;2:2;;;27:1;24;17:12;2:2;199:72:9;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;199:72:9;246:18;;;;-1:-1:-1;;;;;;246:18:9;;;-1:-1:-1;;;;;83:2433:9;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {
            "5299": [
              {
                "length": 32,
                "start": 506
              },
              {
                "length": 32,
                "start": 568
              },
              {
                "length": 32,
                "start": 635
              },
              {
                "length": 32,
                "start": 697
              },
              {
                "length": 32,
                "start": 739
              }
            ]
          },
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100675760003560e01c806380caa3531161005057806380caa3531461011d578063c45a01551461017e578063d9b7a6e7146101af57610067565b80633558e94c1461006c57806369a2fcbd146100ce575b600080fd5b6100b56004803603608081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604081013590606001356101f2565b6040805192835260208301919091528051918290030190f35b6100b5600480360360a08110156100e457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060800135610230565b61016c600480360360a081101561013357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060800135610270565b60408051918252519081900360200190f35b6101866102b7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b5600480360360608110156101c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356102db565b6000806102227f000000000000000000000000000000000000000000000000000000000000000087878787610316565b915091505b94509492505050565b6000806102617f000000000000000000000000000000000000000000000000000000000000000088888888886103f5565b915091505b9550959350505050565b6000805a90506102a47f000000000000000000000000000000000000000000000000000000000000000088888888886103f5565b505060005a909103979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008061030a7f0000000000000000000000000000000000000000000000000000000000000000868686610641565b91509150935093915050565b600080610324878787610824565b909250905081158015906103385750600081115b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180611288602d913960400191505060405180910390fd5b60008061039c8686868661090c565b9150915080600014156103b157506102669050565b81156103d25760006103c48286866109f7565b9482019490930392506103e9565b60006103df8285876109f7565b9094039350918201915b50509550959350505050565b60008060008073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561045757600080fd5b505afa15801561046b573d6000803e3d6000fd5b505050506040513d602081101561048157600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161415905060006104aa8a8a8a610b1b565b90506000826104ba57600061052d565b8173ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561050057600080fd5b505afa158015610514573d6000803e3d6000fd5b505050506040513d602081101561052a57600080fd5b50515b905060008273ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d60208110156105a157600080fd5b505190508681108015906105b55750600087115b61060a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061132d6027913960400191505060405180910390fd5b60008061061a8e8e8e8e8e610316565b9150915061062c8282858c8a89610c06565b97509750505050505050965096945050505050565b600080600080610652888888610824565b915091506000610663898989610b1b565b905060008073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156106c457600080fd5b505afa1580156106d8573d6000803e3d6000fd5b505050506040513d60208110156106ee57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161415905060008161071857600061078b565b8273ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561075e57600080fd5b505afa158015610772573d6000803e3d6000fd5b505050506040513d602081101561078857600080fd5b50515b905060008373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d557600080fd5b505afa1580156107e9573d6000803e3d6000fd5b505050506040513d60208110156107ff57600080fd5b505190506108118686838c8787610c06565b9750975050505050505094509492505050565b60008060006108338585610cdf565b509050600080610844888888610b1b565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561088957600080fd5b505afa15801561089d573d6000803e3d6000fd5b505050506040513d60608110156108b357600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146108fa5780826108fd565b81815b90999098509650505050505050565b6000808561091b858786610e32565b1091506000610930858563ffffffff610f0716565b9050600061098261097d61094c846103e863ffffffff610f0716565b866109575789610959565b8a5b6109786103e58961096a578d61096c565b8c5b9063ffffffff610f0716565b610e32565b610f93565b905060006103e5856109a5576109a0876103e863ffffffff610f0716565b6109b7565b6109b7886103e863ffffffff610f0716565b816109be57fe5b049050808210156109d9575060009350839250610227915050565b6109e9828263ffffffff6110e816565b935050505094509492505050565b6000808411610a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806112da602b913960400191505060405180910390fd5b600083118015610a615750600082115b610ab6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806113056028913960400191505060405180910390fd5b6000610aca856103e563ffffffff610f0716565b90506000610ade828563ffffffff610f0716565b90506000610b0483610af8886103e863ffffffff610f0716565b9063ffffffff61115a16565b9050808281610b0f57fe5b04979650505050505050565b6000806000610b2a8585610cdf565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080838015610c165750600083115b15610c9e576000610c3061097d8a8a63ffffffff610f0716565b90506000610c3d85610f93565b905080821115610c9b57876000610c5a848463ffffffff6110e816565b90506000610c7384610af887600563ffffffff610f0716565b90506000610c82848484610e32565b9050610c948c8263ffffffff61115a16565b9b50505050505b50505b85610caf898763ffffffff610f0716565b81610cb657fe5b0486610cc8898863ffffffff610f0716565b81610ccf57fe5b0491509150965096945050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806112b56025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610da1578284610da4565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610e2b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000806000610e4186866111cc565b9150915060008480610e4f57fe5b868809905082811115610e63576001820391505b918290039181610e8157848381610e7657fe5b049350505050610f00565b848210610eef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610efa838387611217565b93505050505b9392505050565b6000811580610f2257505080820282828281610f1f57fe5b04145b610f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b600081610fa2575060006110e3565b8160017001000000000000000000000000000000008210610fc85760809190911c9060401b5b680100000000000000008210610fe35760409190911c9060201b5b6401000000008210610ffa5760209190911c9060101b5b62010000821061100f5760109190911c9060081b5b61010082106110235760089190911c9060041b5b601082106110365760049190911c9060021b5b600882106110425760011b5b600181858161104d57fe5b048201901c9050600181858161105f57fe5b048201901c9050600181858161107157fe5b048201901c9050600181858161108357fe5b048201901c9050600181858161109557fe5b048201901c905060018185816110a757fe5b048201901c905060018185816110b957fe5b048201901c905060008185816110cb57fe5b0490508082106110db57806110dd565b815b93505050505b919050565b80820382811115610f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b80820182811015610f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8486099050838502925082810391508281101561120f576001820391505b509250929050565b6000818103821680838161122757fe5b04925080858161123357fe5b04945080816000038161124257fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fe4d61725844455856324172626974726167654c6962726172793a205a45524f5f504149525f52455345525645534d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534d61725844455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f4c4951554944495459436f6d707574654c697175696469747956616c75653a204c49515549444954595f414d4f554e54a2646970667358221220dcb83611deeb4c1f711018c68d3f3c406735731746d9ac0106134b62cdfaf00264736f6c63430006060033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80CAA353 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0x80CAA353 EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x17E JUMPI DUP1 PUSH4 0xD9B7A6E7 EQ PUSH2 0x1AF JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x3558E94C EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0x69A2FCBD EQ PUSH2 0xCE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1F2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0xB5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x230 JUMP JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x270 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x186 PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2DB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x222 PUSH32 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x316 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x261 PUSH32 0x0 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x3F5 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x2A4 PUSH32 0x0 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x3F5 JUMP JUMPDEST POP POP PUSH1 0x0 GAS SWAP1 SWAP2 SUB SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x30A PUSH32 0x0 DUP7 DUP7 DUP7 PUSH2 0x641 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x324 DUP8 DUP8 DUP8 PUSH2 0x824 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x338 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x38D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1288 PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x39C DUP7 DUP7 DUP7 DUP7 PUSH2 0x90C JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP1 PUSH1 0x0 EQ ISZERO PUSH2 0x3B1 JUMPI POP PUSH2 0x266 SWAP1 POP JUMP JUMPDEST DUP2 ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 PUSH2 0x3C4 DUP3 DUP7 DUP7 PUSH2 0x9F7 JUMP JUMPDEST SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP4 SUB SWAP3 POP PUSH2 0x3E9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3DF DUP3 DUP6 DUP8 PUSH2 0x9F7 JUMP JUMPDEST SWAP1 SWAP5 SUB SWAP4 POP SWAP2 DUP3 ADD SWAP2 JUMPDEST POP POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x46B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP PUSH1 0x0 PUSH2 0x4AA DUP11 DUP11 DUP11 PUSH2 0xB1B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x4BA JUMPI PUSH1 0x0 PUSH2 0x52D JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7464FC3D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x514 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x58B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP7 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x5B5 JUMPI POP PUSH1 0x0 DUP8 GT JUMPDEST PUSH2 0x60A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x132D PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x61A DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0x316 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x62C DUP3 DUP3 DUP6 DUP13 DUP11 DUP10 PUSH2 0xC06 JUMP JUMPDEST SWAP8 POP SWAP8 POP POP POP POP POP POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x652 DUP9 DUP9 DUP9 PUSH2 0x824 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x663 DUP10 DUP10 DUP10 PUSH2 0xB1B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x718 JUMPI PUSH1 0x0 PUSH2 0x78B JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7464FC3D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x75E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x772 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x811 DUP7 DUP7 DUP4 DUP13 DUP8 DUP8 PUSH2 0xC06 JUMP JUMPDEST SWAP8 POP SWAP8 POP POP POP POP POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x833 DUP6 DUP6 PUSH2 0xCDF JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x844 DUP9 DUP9 DUP9 PUSH2 0xB1B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x889 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x89D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x8B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x8FA JUMPI DUP1 DUP3 PUSH2 0x8FD JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH2 0x91B DUP6 DUP8 DUP7 PUSH2 0xE32 JUMP JUMPDEST LT SWAP2 POP PUSH1 0x0 PUSH2 0x930 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x982 PUSH2 0x97D PUSH2 0x94C DUP5 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST DUP7 PUSH2 0x957 JUMPI DUP10 PUSH2 0x959 JUMP JUMPDEST DUP11 JUMPDEST PUSH2 0x978 PUSH2 0x3E5 DUP10 PUSH2 0x96A JUMPI DUP14 PUSH2 0x96C JUMP JUMPDEST DUP13 JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST PUSH2 0xE32 JUMP JUMPDEST PUSH2 0xF93 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3E5 DUP6 PUSH2 0x9A5 JUMPI PUSH2 0x9A0 DUP8 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST PUSH2 0x9B7 JUMP JUMPDEST PUSH2 0x9B7 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST DUP2 PUSH2 0x9BE JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x9D9 JUMPI POP PUSH1 0x0 SWAP4 POP DUP4 SWAP3 POP PUSH2 0x227 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9E9 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x10E8 AND JUMP JUMPDEST SWAP4 POP POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0xA51 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12DA PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0xA61 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0xAB6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1305 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xACA DUP6 PUSH2 0x3E5 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xADE DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB04 DUP4 PUSH2 0xAF8 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x115A AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0xB0F JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xB2A DUP6 DUP6 PUSH2 0xCDF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x236595447338C75B512D89A54E3B5160E3A38C8FFE13F0E88C634CA037665806 PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP1 ISZERO PUSH2 0xC16 JUMPI POP PUSH1 0x0 DUP4 GT JUMPDEST ISZERO PUSH2 0xC9E JUMPI PUSH1 0x0 PUSH2 0xC30 PUSH2 0x97D DUP11 DUP11 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC3D DUP6 PUSH2 0xF93 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xC9B JUMPI DUP8 PUSH1 0x0 PUSH2 0xC5A DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x10E8 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC73 DUP5 PUSH2 0xAF8 DUP8 PUSH1 0x5 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC82 DUP5 DUP5 DUP5 PUSH2 0xE32 JUMP JUMPDEST SWAP1 POP PUSH2 0xC94 DUP13 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x115A AND JUMP JUMPDEST SWAP12 POP POP POP POP POP JUMPDEST POP POP JUMPDEST DUP6 PUSH2 0xCAF DUP10 DUP8 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST DUP2 PUSH2 0xCB6 JUMPI INVALID JUMPDEST DIV DUP7 PUSH2 0xCC8 DUP10 DUP9 PUSH4 0xFFFFFFFF PUSH2 0xF07 AND JUMP JUMPDEST DUP2 PUSH2 0xCCF JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xD67 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x12B5 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xDA1 JUMPI DUP3 DUP5 PUSH2 0xDA4 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xE2B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xE41 DUP7 DUP7 PUSH2 0x11CC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xE4F JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xE63 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0xE81 JUMPI DUP5 DUP4 DUP2 PUSH2 0xE76 JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0xF00 JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0xEEF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xEFA DUP4 DUP4 DUP8 PUSH2 0x1217 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xF22 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xF1F JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xF8D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xFA2 JUMPI POP PUSH1 0x0 PUSH2 0x10E3 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0xFC8 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0xFE3 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0xFFA JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x100F JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x1023 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x1036 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x1042 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x104D JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x105F JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1071 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1083 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1095 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x10A7 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x10B9 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x10CB JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x10DB JUMPI DUP1 PUSH2 0x10DD JUMP JUMPDEST DUP2 JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xF8D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xF8D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0x120F JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0x1227 JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0x1233 JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0x1242 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP INVALID 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN COINBASE PUSH19 0x626974726167654C6962726172793A205A4552 0x4F 0x5F POP COINBASE 0x49 MSTORE 0x5F MSTORE GASLIMIT MSTORE8 GASLIMIT MSTORE JUMP GASLIMIT MSTORE8 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494445 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494E53 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE NUMBER PUSH16 0x6D707574654C69717569646974795661 PUSH13 0x75653A204C4951554944495459 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0xB8 CALLDATASIZE GT 0xDE 0xEB 0x4C 0x1F PUSH18 0x1018C68D3F3C406735731746D9AC0106134B PUSH3 0xCDFAF0 MUL PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "83:2433:9:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;83:2433:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;344:422:9;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;344:422:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1291:540;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;1291:540:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1904:610::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;1904:610:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;160:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;831:374;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;831:374:9;;;;;;;;;;;;;;;;;;:::i;344:422::-;522:16;540;575:184;644:7;665:6;685;705:15;734;575:55;:184::i;:::-;568:191;;;;344:422;;;;;;;;:::o;1291:540::-;1524:20;1554;1598:226;1680:7;1701:6;1721;1741:15;1770;1799;1598:68;:226::i;:::-;1591:233;;;;1291:540;;;;;;;;;:::o;1904:610::-;2149:7;2173:14;2190:9;2173:26;;2209:226;2291:7;2312:6;2332;2352:15;2381;2410;2209:68;:226::i;:::-;;;2445:13;2461:9;2487:20;;;;1904:610;-1:-1:-1;;;;;;;1904:610:9:o;160:32::-;;;:::o;831:374::-;977:20;1007;1051:147;1112:7;1133:6;1153;1173:15;1051:47;:147::i;:::-;1044:154;;;;831:374;;;;;;:::o;1720:1161:18:-;1923:16;1941;2038:53;2067:7;2076:6;2084;2038:28;:53::i;:::-;2015:76;;-1:-1:-1;2015:76:18;-1:-1:-1;2110:12:18;;;;;:28;;;2137:1;2126:8;:12;2110:28;2102:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2266:9;2277:16;2297:82;2326:15;2343;2360:8;2370;2297:28;:82::i;:::-;2265:114;;;;2394:8;2406:1;2394:13;2390:71;;;-1:-1:-1;2423:27:18;;-1:-1:-1;2423:27:18;2390:71;2523:4;2519:356;;;2543:14;2560:59;2590:8;2600;2610;2560:29;:59::i;:::-;2633:20;;;;2667:21;;;;-1:-1:-1;2519:356:18;;;2719:14;2736:59;2766:8;2776;2786;2736:29;:59::i;:::-;2843:21;;;;-1:-1:-1;2809:20:18;;;;2519:356;1720:1161;;;;;;;;;;:::o;5037:984::-;5295:20;5325;5362:10;5421:1;5375:48;;5393:7;5375:32;;;:34;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5375:34:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5375:34:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5375:34:18;:48;;;;;-1:-1:-1;5433:19:18;5470:49;5495:7;5504:6;5512;5470:24;:49::i;:::-;5433:87;;5530:10;5543:5;:24;;5566:1;5543:24;;;5551:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5551:12:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5551:12:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5551:12:18;5543:24;5530:37;;5577:16;5596:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5596:18:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5596:18:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5596:18:18;;-1:-1:-1;5682:30:18;;;;;;:53;;;5734:1;5716:15;:19;5682:53;5674:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5791:14;5807;5825:84;5851:7;5860:6;5868;5876:15;5893;5825:25;:84::i;:::-;5790:119;;;;5927:87;5949:9;5960;5971:11;5984:15;6001:5;6008;5927:21;:87::i;:::-;5920:94;;;;;;;;;;5037:984;;;;;;;;;:::o;4128:683::-;4290:20;4312;4345:17;4364;4385:53;4414:7;4423:6;4431;4385:28;:53::i;:::-;4344:94;;;;4448:19;4485:49;4510:7;4519:6;4527;4485:24;:49::i;:::-;4448:87;;4545:10;4604:1;4558:48;;4576:7;4558:32;;;:34;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4558:34:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4558:34:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4558:34:18;:48;;;;;-1:-1:-1;4616:10:18;4558:48;4629:24;;4652:1;4629:24;;;4637:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4637:12:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4637:12:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4637:12:18;4629:24;4616:37;;4663:16;4682:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4682:18:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4682:18:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4682:18:18;;-1:-1:-1;4717:87:18;4739:9;4750;4682:18;4774:15;4791:5;4798;4717:21;:87::i;:::-;4710:94;;;;;;;;;;4128:683;;;;;;;:::o;1250:387:17:-;1343:13;1358;1384:14;1403:26;1414:6;1422;1403:10;:26::i;:::-;1383:46;;;1440:13;1455;1488:32;1496:7;1505:6;1513;1488:7;:32::i;:::-;1473:60;;;:62;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1473:62:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1473:62:17;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1473:62:17;;;;;;;1439:96;;;;;-1:-1:-1;1439:96:17;;-1:-1:-1;1568:16:17;;;;;;;;:62;;1611:8;1621;1568:62;;;1588:8;1598;1568:62;1545:85;;;;-1:-1:-1;1250:387:17;-1:-1:-1;;;;;;;1250:387:17:o;680:903:18:-;865:9;876:16;966:15;911:52;927:8;937:15;954:8;911:15;:52::i;:::-;:70;;-1:-1:-1;992:17:18;1012:22;:8;1025;1012:22;:12;:22;:::i;:::-;992:42;-1:-1:-1;1045:16:18;1064:232;1093:193;1126:19;992:42;1140:4;1126:19;:13;:19;:::i;:::-;1163:4;:40;;1188:15;1163:40;;;1170:15;1163:40;1221:51;1268:3;1222:4;:40;;1247:15;1222:40;;;1229:15;1222:40;1221:46;:51;:46;:51;:::i;:::-;1093:15;:193::i;:::-;1064:15;:232::i;:::-;1045:251;;1306:17;1377:3;1327:4;:46;;1355:18;:8;1368:4;1355:18;:12;:18;:::i;:::-;1327:46;;;1334:18;:8;1347:4;1334:18;:12;:18;:::i;:::-;1326:54;;;;;;1306:74;;1406:9;1395:8;:20;1391:43;;;-1:-1:-1;1425:5:18;;-1:-1:-1;1425:5:18;;-1:-1:-1;1417:17:18;;-1:-1:-1;;1417:17:18;1391:43;1553:23;:8;1566:9;1553:23;:12;:23;:::i;:::-;1542:34;;680:903;;;;;;;;;;:::o;2183:510:17:-;2276:14;2321:1;2310:8;:12;2302:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2400:1;2388:9;:13;:31;;;;;2418:1;2405:10;:14;2388:31;2380:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2474:20;2497:17;:8;2510:3;2497:17;:12;:17;:::i;:::-;2474:40;-1:-1:-1;2524:14:17;2541:31;2474:40;2561:10;2541:31;:19;:31;:::i;:::-;2524:48;-1:-1:-1;2582:16:17;2601:40;2625:15;2601:19;:9;2615:4;2601:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;2582:59;;2675:11;2663:9;:23;;;;;;;2183:510;-1:-1:-1;;;;;;;2183:510:17:o;725:470::-;814:12;839:14;855;873:26;884:6;892;873:10;:26::i;:::-;1033:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1033:32:17;;;;;1023:43;;;;;;939:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;939:246:17;;;;;;;929:257;;;;;;;;;725:470;-1:-1:-1;;;;;725:470:17:o;2956:910:18:-;3172:20;3194;3230:5;:18;;;;;3247:1;3239:5;:9;3230:18;3226:525;;;3264:10;3277:41;3293:24;:9;3307;3293:24;:13;:24;:::i;3277:41::-;3264:54;;3332:14;3349:22;3365:5;3349:15;:22::i;:::-;3332:39;;3397:9;3389:5;:17;3385:356;;;3444:11;3426:15;3491:20;:5;3501:9;3491:20;:9;:20;:::i;:::-;3473:38;-1:-1:-1;3529:16:18;3548:27;3565:9;3548:12;:5;3558:1;3548:12;:9;:12;:::i;:27::-;3529:46;;3593:17;3613:52;3629:10;3641;3653:11;3613:15;:52::i;:::-;3593:72;-1:-1:-1;3697:29:18;:11;3593:72;3697:29;:15;:29;:::i;:::-;3683:43;;3385:356;;;;;3226:525;;;3801:11;3768:30;:9;3782:15;3768:30;:13;:30;:::i;:::-;:44;;;;;;3847:11;3814:30;:9;3828:15;3814:30;:13;:30;:::i;:::-;:44;;;;;;3760:99;;;;2956:910;;;;;;;;;:::o;291:345:17:-;366:14;382;426:6;416:16;;:6;:16;;;;408:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:6;503:15;;:6;:15;;;:53;;541:6;549;503:53;;;522:6;530;503:53;484:72;;-1:-1:-1;484:72:17;-1:-1:-1;574:20:17;;;566:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:345;;;;;:::o;897:373:3:-;999:7;1019:9;1030;1043:13;1051:1;1054;1043:7;:13::i;:::-;1018:38;;;;1067:10;1093:1;1080:15;;;;;1090:1;1087;1080:15;1067:28;;1114:1;1109:2;:6;1105:18;;;1122:1;1117:6;;;;1105:18;1133:7;;;;;1155:6;1151:24;;1174:1;1170;:5;;;;;;1163:12;;;;;;;1151:24;1198:1;1194;:5;1186:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:16;1255:1;1258;1261;1247:7;:16::i;:::-;1240:23;;;;;897:373;;;;;;:::o;419:140:20:-;471:6;497;;;:30;;-1:-1:-1;;512:5:20;;;526:1;521;512:5;521:1;507:15;;;;;:20;497:30;489:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;419:140;;;;:::o;382:1197:0:-;430:7;453:6;449:20;;-1:-1:-1;468:1:0;461:8;;449:20;644:1;667;688:35;682:41;;678:104;;746:3;739:10;;;;;769:2;763:8;678:104;801:19;795:2;:25;791:87;;843:2;836:9;;;;;865:2;859:8;791:87;897:11;891:2;:17;887:79;;931:2;924:9;;;;;953:2;947:8;887:79;985:7;979:2;:13;975:74;;1015:2;1008:9;;;;;1037:1;1031:7;975:74;1068:5;1062:2;:11;1058:71;;1096:1;1089:8;;;;;1117:1;1111:7;1058:71;1148:4;1142:2;:10;1138:70;;1175:1;1168:8;;;;;1196:1;1190:7;1138:70;1227:3;1221:2;:9;1217:47;;1252:1;1246:7;1217:47;1292:1;1286;1282;:5;;;;;;1278:1;:9;1277:16;;1273:20;;1322:1;1316;1312;:5;;;;;;1308:1;:9;1307:16;;1303:20;;1352:1;1346;1342;:5;;;;;;1338:1;:9;1337:16;;1333:20;;1382:1;1376;1372;:5;;;;;;1368:1;:9;1367:16;;1363:20;;1412:1;1406;1402;:5;;;;;;1398:1;:9;1397:16;;1393:20;;1442:1;1436;1432;:5;;;;;;1428:1;:9;1427:16;;1423:20;;1472:1;1466;1462;:5;;;;;;1458:1;:9;1457:16;;1453:20;;1520:10;1537:1;1533;:5;;;;;;1520:18;;1560:2;1556:1;:6;:15;;1569:2;1556:15;;;1565:1;1556:15;1548:24;;;;;382:1197;;;;:::o;286:127:20:-;369:5;;;364:16;;;;356:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;154:126;237:5;;;232:16;;;;224:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;216:206:3;278:9;;;344:2;333:1;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o;428:463::-;530:7;568:2;;;564:6;;;569:1;564:6;580:9;;;;;;;604:4;599:9;;;;;;;;;638:4;630;629:5;;628:14;;;;;685:1;:9;;;713:5;;;709:9;;704:14;737:5;;;733:9;;728:14;761:5;;;757:9;;752:14;785:5;;;781:9;;776:14;809:5;;;805:9;;800:14;833:5;;;829:9;;824:14;857:5;;;853:9;;848:14;;;628;;645:1;628:18;623:24;;;;618:29;;;;879:5;;428:463;-1:-1:-1;;428:463:3:o"
        }
      },
      "interface": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "factory_",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityAmount",
              "type": "uint256"
            }
          ],
          "name": "getGasCostOfGetLiquidityValueAfterArbitrageToPrice",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityAmount",
              "type": "uint256"
            }
          ],
          "name": "getLiquidityValue",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "tokenAAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenBAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityAmount",
              "type": "uint256"
            }
          ],
          "name": "getLiquidityValueAfterArbitrageToPrice",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "tokenAAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenBAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenB",
              "type": "uint256"
            }
          ],
          "name": "getReservesAfterArbitrage",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "reserveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveB",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "bytecode": "60a060405234801561001057600080fd5b506040516114043803806114048339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b031661138961007b600039806101fa5280610238528061027b52806102b952806102e352506113896000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806380caa3531161005057806380caa3531461011d578063c45a01551461017e578063d9b7a6e7146101af57610067565b80633558e94c1461006c57806369a2fcbd146100ce575b600080fd5b6100b56004803603608081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604081013590606001356101f2565b6040805192835260208301919091528051918290030190f35b6100b5600480360360a08110156100e457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060800135610230565b61016c600480360360a081101561013357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060800135610270565b60408051918252519081900360200190f35b6101866102b7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b5600480360360608110156101c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356102db565b6000806102227f000000000000000000000000000000000000000000000000000000000000000087878787610316565b915091505b94509492505050565b6000806102617f000000000000000000000000000000000000000000000000000000000000000088888888886103f5565b915091505b9550959350505050565b6000805a90506102a47f000000000000000000000000000000000000000000000000000000000000000088888888886103f5565b505060005a909103979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008061030a7f0000000000000000000000000000000000000000000000000000000000000000868686610641565b91509150935093915050565b600080610324878787610824565b909250905081158015906103385750600081115b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180611288602d913960400191505060405180910390fd5b60008061039c8686868661090c565b9150915080600014156103b157506102669050565b81156103d25760006103c48286866109f7565b9482019490930392506103e9565b60006103df8285876109f7565b9094039350918201915b50509550959350505050565b60008060008073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561045757600080fd5b505afa15801561046b573d6000803e3d6000fd5b505050506040513d602081101561048157600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161415905060006104aa8a8a8a610b1b565b90506000826104ba57600061052d565b8173ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561050057600080fd5b505afa158015610514573d6000803e3d6000fd5b505050506040513d602081101561052a57600080fd5b50515b905060008273ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d60208110156105a157600080fd5b505190508681108015906105b55750600087115b61060a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061132d6027913960400191505060405180910390fd5b60008061061a8e8e8e8e8e610316565b9150915061062c8282858c8a89610c06565b97509750505050505050965096945050505050565b600080600080610652888888610824565b915091506000610663898989610b1b565b905060008073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156106c457600080fd5b505afa1580156106d8573d6000803e3d6000fd5b505050506040513d60208110156106ee57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161415905060008161071857600061078b565b8273ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561075e57600080fd5b505afa158015610772573d6000803e3d6000fd5b505050506040513d602081101561078857600080fd5b50515b905060008373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d557600080fd5b505afa1580156107e9573d6000803e3d6000fd5b505050506040513d60208110156107ff57600080fd5b505190506108118686838c8787610c06565b9750975050505050505094509492505050565b60008060006108338585610cdf565b509050600080610844888888610b1b565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561088957600080fd5b505afa15801561089d573d6000803e3d6000fd5b505050506040513d60608110156108b357600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146108fa5780826108fd565b81815b90999098509650505050505050565b6000808561091b858786610e32565b1091506000610930858563ffffffff610f0716565b9050600061098261097d61094c846103e863ffffffff610f0716565b866109575789610959565b8a5b6109786103e58961096a578d61096c565b8c5b9063ffffffff610f0716565b610e32565b610f93565b905060006103e5856109a5576109a0876103e863ffffffff610f0716565b6109b7565b6109b7886103e863ffffffff610f0716565b816109be57fe5b049050808210156109d9575060009350839250610227915050565b6109e9828263ffffffff6110e816565b935050505094509492505050565b6000808411610a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806112da602b913960400191505060405180910390fd5b600083118015610a615750600082115b610ab6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806113056028913960400191505060405180910390fd5b6000610aca856103e563ffffffff610f0716565b90506000610ade828563ffffffff610f0716565b90506000610b0483610af8886103e863ffffffff610f0716565b9063ffffffff61115a16565b9050808281610b0f57fe5b04979650505050505050565b6000806000610b2a8585610cdf565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080838015610c165750600083115b15610c9e576000610c3061097d8a8a63ffffffff610f0716565b90506000610c3d85610f93565b905080821115610c9b57876000610c5a848463ffffffff6110e816565b90506000610c7384610af887600563ffffffff610f0716565b90506000610c82848484610e32565b9050610c948c8263ffffffff61115a16565b9b50505050505b50505b85610caf898763ffffffff610f0716565b81610cb657fe5b0486610cc8898863ffffffff610f0716565b81610ccf57fe5b0491509150965096945050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806112b56025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610da1578284610da4565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610e2b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000806000610e4186866111cc565b9150915060008480610e4f57fe5b868809905082811115610e63576001820391505b918290039181610e8157848381610e7657fe5b049350505050610f00565b848210610eef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610efa838387611217565b93505050505b9392505050565b6000811580610f2257505080820282828281610f1f57fe5b04145b610f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b600081610fa2575060006110e3565b8160017001000000000000000000000000000000008210610fc85760809190911c9060401b5b680100000000000000008210610fe35760409190911c9060201b5b6401000000008210610ffa5760209190911c9060101b5b62010000821061100f5760109190911c9060081b5b61010082106110235760089190911c9060041b5b601082106110365760049190911c9060021b5b600882106110425760011b5b600181858161104d57fe5b048201901c9050600181858161105f57fe5b048201901c9050600181858161107157fe5b048201901c9050600181858161108357fe5b048201901c9050600181858161109557fe5b048201901c905060018185816110a757fe5b048201901c905060018185816110b957fe5b048201901c905060008185816110cb57fe5b0490508082106110db57806110dd565b815b93505050505b919050565b80820382811115610f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b80820182811015610f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8486099050838502925082810391508281101561120f576001820391505b509250929050565b6000818103821680838161122757fe5b04925080858161123357fe5b04945080816000038161124257fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fe4d61725844455856324172626974726167654c6962726172793a205a45524f5f504149525f52455345525645534d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534d61725844455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f4c4951554944495459436f6d707574654c697175696469747956616c75653a204c49515549444954595f414d4f554e54a2646970667358221220dcb83611deeb4c1f711018c68d3f3c406735731746d9ac0106134b62cdfaf00264736f6c63430006060033",
      "bin": "60a060405234801561001057600080fd5b506040516114043803806114048339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b031661138961007b600039806101fa5280610238528061027b52806102b952806102e352506113896000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806380caa3531161005057806380caa3531461011d578063c45a01551461017e578063d9b7a6e7146101af57610067565b80633558e94c1461006c57806369a2fcbd146100ce575b600080fd5b6100b56004803603608081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604081013590606001356101f2565b6040805192835260208301919091528051918290030190f35b6100b5600480360360a08110156100e457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060800135610230565b61016c600480360360a081101561013357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060800135610270565b60408051918252519081900360200190f35b6101866102b7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b5600480360360608110156101c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356102db565b6000806102227f000000000000000000000000000000000000000000000000000000000000000087878787610316565b915091505b94509492505050565b6000806102617f000000000000000000000000000000000000000000000000000000000000000088888888886103f5565b915091505b9550959350505050565b6000805a90506102a47f000000000000000000000000000000000000000000000000000000000000000088888888886103f5565b505060005a909103979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008061030a7f0000000000000000000000000000000000000000000000000000000000000000868686610641565b91509150935093915050565b600080610324878787610824565b909250905081158015906103385750600081115b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180611288602d913960400191505060405180910390fd5b60008061039c8686868661090c565b9150915080600014156103b157506102669050565b81156103d25760006103c48286866109f7565b9482019490930392506103e9565b60006103df8285876109f7565b9094039350918201915b50509550959350505050565b60008060008073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561045757600080fd5b505afa15801561046b573d6000803e3d6000fd5b505050506040513d602081101561048157600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161415905060006104aa8a8a8a610b1b565b90506000826104ba57600061052d565b8173ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561050057600080fd5b505afa158015610514573d6000803e3d6000fd5b505050506040513d602081101561052a57600080fd5b50515b905060008273ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d60208110156105a157600080fd5b505190508681108015906105b55750600087115b61060a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061132d6027913960400191505060405180910390fd5b60008061061a8e8e8e8e8e610316565b9150915061062c8282858c8a89610c06565b97509750505050505050965096945050505050565b600080600080610652888888610824565b915091506000610663898989610b1b565b905060008073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156106c457600080fd5b505afa1580156106d8573d6000803e3d6000fd5b505050506040513d60208110156106ee57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161415905060008161071857600061078b565b8273ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561075e57600080fd5b505afa158015610772573d6000803e3d6000fd5b505050506040513d602081101561078857600080fd5b50515b905060008373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d557600080fd5b505afa1580156107e9573d6000803e3d6000fd5b505050506040513d60208110156107ff57600080fd5b505190506108118686838c8787610c06565b9750975050505050505094509492505050565b60008060006108338585610cdf565b509050600080610844888888610b1b565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561088957600080fd5b505afa15801561089d573d6000803e3d6000fd5b505050506040513d60608110156108b357600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146108fa5780826108fd565b81815b90999098509650505050505050565b6000808561091b858786610e32565b1091506000610930858563ffffffff610f0716565b9050600061098261097d61094c846103e863ffffffff610f0716565b866109575789610959565b8a5b6109786103e58961096a578d61096c565b8c5b9063ffffffff610f0716565b610e32565b610f93565b905060006103e5856109a5576109a0876103e863ffffffff610f0716565b6109b7565b6109b7886103e863ffffffff610f0716565b816109be57fe5b049050808210156109d9575060009350839250610227915050565b6109e9828263ffffffff6110e816565b935050505094509492505050565b6000808411610a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806112da602b913960400191505060405180910390fd5b600083118015610a615750600082115b610ab6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806113056028913960400191505060405180910390fd5b6000610aca856103e563ffffffff610f0716565b90506000610ade828563ffffffff610f0716565b90506000610b0483610af8886103e863ffffffff610f0716565b9063ffffffff61115a16565b9050808281610b0f57fe5b04979650505050505050565b6000806000610b2a8585610cdf565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080838015610c165750600083115b15610c9e576000610c3061097d8a8a63ffffffff610f0716565b90506000610c3d85610f93565b905080821115610c9b57876000610c5a848463ffffffff6110e816565b90506000610c7384610af887600563ffffffff610f0716565b90506000610c82848484610e32565b9050610c948c8263ffffffff61115a16565b9b50505050505b50505b85610caf898763ffffffff610f0716565b81610cb657fe5b0486610cc8898863ffffffff610f0716565b81610ccf57fe5b0491509150965096945050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806112b56025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610da1578284610da4565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610e2b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000806000610e4186866111cc565b9150915060008480610e4f57fe5b868809905082811115610e63576001820391505b918290039181610e8157848381610e7657fe5b049350505050610f00565b848210610eef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610efa838387611217565b93505050505b9392505050565b6000811580610f2257505080820282828281610f1f57fe5b04145b610f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b600081610fa2575060006110e3565b8160017001000000000000000000000000000000008210610fc85760809190911c9060401b5b680100000000000000008210610fe35760409190911c9060201b5b6401000000008210610ffa5760209190911c9060101b5b62010000821061100f5760109190911c9060081b5b61010082106110235760089190911c9060041b5b601082106110365760049190911c9060021b5b600882106110425760011b5b600181858161104d57fe5b048201901c9050600181858161105f57fe5b048201901c9050600181858161107157fe5b048201901c9050600181858161108357fe5b048201901c9050600181858161109557fe5b048201901c905060018185816110a757fe5b048201901c905060018185816110b957fe5b048201901c905060008185816110cb57fe5b0490508082106110db57806110dd565b815b93505050505b919050565b80820382811115610f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b80820182811015610f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8486099050838502925082810391508281101561120f576001820391505b509250929050565b6000818103821680838161122757fe5b04925080858161123357fe5b04945080816000038161124257fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fe4d61725844455856324172626974726167654c6962726172793a205a45524f5f504149525f52455345525645534d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534d61725844455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f4c4951554944495459436f6d707574654c697175696469747956616c75653a204c49515549444954595f414d4f554e54a2646970667358221220dcb83611deeb4c1f711018c68d3f3c406735731746d9ac0106134b62cdfaf00264736f6c63430006060033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100675760003560e01c806380caa3531161005057806380caa3531461011d578063c45a01551461017e578063d9b7a6e7146101af57610067565b80633558e94c1461006c57806369a2fcbd146100ce575b600080fd5b6100b56004803603608081101561008257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604081013590606001356101f2565b6040805192835260208301919091528051918290030190f35b6100b5600480360360a08110156100e457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060800135610230565b61016c600480360360a081101561013357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060800135610270565b60408051918252519081900360200190f35b6101866102b7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b5600480360360608110156101c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356102db565b6000806102227f000000000000000000000000000000000000000000000000000000000000000087878787610316565b915091505b94509492505050565b6000806102617f000000000000000000000000000000000000000000000000000000000000000088888888886103f5565b915091505b9550959350505050565b6000805a90506102a47f000000000000000000000000000000000000000000000000000000000000000088888888886103f5565b505060005a909103979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008061030a7f0000000000000000000000000000000000000000000000000000000000000000868686610641565b91509150935093915050565b600080610324878787610824565b909250905081158015906103385750600081115b61038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180611288602d913960400191505060405180910390fd5b60008061039c8686868661090c565b9150915080600014156103b157506102669050565b81156103d25760006103c48286866109f7565b9482019490930392506103e9565b60006103df8285876109f7565b9094039350918201915b50509550959350505050565b60008060008073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561045757600080fd5b505afa15801561046b573d6000803e3d6000fd5b505050506040513d602081101561048157600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161415905060006104aa8a8a8a610b1b565b90506000826104ba57600061052d565b8173ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561050057600080fd5b505afa158015610514573d6000803e3d6000fd5b505050506040513d602081101561052a57600080fd5b50515b905060008273ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561057757600080fd5b505afa15801561058b573d6000803e3d6000fd5b505050506040513d60208110156105a157600080fd5b505190508681108015906105b55750600087115b61060a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061132d6027913960400191505060405180910390fd5b60008061061a8e8e8e8e8e610316565b9150915061062c8282858c8a89610c06565b97509750505050505050965096945050505050565b600080600080610652888888610824565b915091506000610663898989610b1b565b905060008073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156106c457600080fd5b505afa1580156106d8573d6000803e3d6000fd5b505050506040513d60208110156106ee57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161415905060008161071857600061078b565b8273ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561075e57600080fd5b505afa158015610772573d6000803e3d6000fd5b505050506040513d602081101561078857600080fd5b50515b905060008373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d557600080fd5b505afa1580156107e9573d6000803e3d6000fd5b505050506040513d60208110156107ff57600080fd5b505190506108118686838c8787610c06565b9750975050505050505094509492505050565b60008060006108338585610cdf565b509050600080610844888888610b1b565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561088957600080fd5b505afa15801561089d573d6000803e3d6000fd5b505050506040513d60608110156108b357600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146108fa5780826108fd565b81815b90999098509650505050505050565b6000808561091b858786610e32565b1091506000610930858563ffffffff610f0716565b9050600061098261097d61094c846103e863ffffffff610f0716565b866109575789610959565b8a5b6109786103e58961096a578d61096c565b8c5b9063ffffffff610f0716565b610e32565b610f93565b905060006103e5856109a5576109a0876103e863ffffffff610f0716565b6109b7565b6109b7886103e863ffffffff610f0716565b816109be57fe5b049050808210156109d9575060009350839250610227915050565b6109e9828263ffffffff6110e816565b935050505094509492505050565b6000808411610a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806112da602b913960400191505060405180910390fd5b600083118015610a615750600082115b610ab6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806113056028913960400191505060405180910390fd5b6000610aca856103e563ffffffff610f0716565b90506000610ade828563ffffffff610f0716565b90506000610b0483610af8886103e863ffffffff610f0716565b9063ffffffff61115a16565b9050808281610b0f57fe5b04979650505050505050565b6000806000610b2a8585610cdf565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080838015610c165750600083115b15610c9e576000610c3061097d8a8a63ffffffff610f0716565b90506000610c3d85610f93565b905080821115610c9b57876000610c5a848463ffffffff6110e816565b90506000610c7384610af887600563ffffffff610f0716565b90506000610c82848484610e32565b9050610c948c8263ffffffff61115a16565b9b50505050505b50505b85610caf898763ffffffff610f0716565b81610cb657fe5b0486610cc8898863ffffffff610f0716565b81610ccf57fe5b0491509150965096945050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806112b56025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610da1578284610da4565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610e2b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000806000610e4186866111cc565b9150915060008480610e4f57fe5b868809905082811115610e63576001820391505b918290039181610e8157848381610e7657fe5b049350505050610f00565b848210610eef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610efa838387611217565b93505050505b9392505050565b6000811580610f2257505080820282828281610f1f57fe5b04145b610f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b600081610fa2575060006110e3565b8160017001000000000000000000000000000000008210610fc85760809190911c9060401b5b680100000000000000008210610fe35760409190911c9060201b5b6401000000008210610ffa5760209190911c9060101b5b62010000821061100f5760109190911c9060081b5b61010082106110235760089190911c9060041b5b601082106110365760049190911c9060021b5b600882106110425760011b5b600181858161104d57fe5b048201901c9050600181858161105f57fe5b048201901c9050600181858161107157fe5b048201901c9050600181858161108357fe5b048201901c9050600181858161109557fe5b048201901c905060018185816110a757fe5b048201901c905060018185816110b957fe5b048201901c905060008185816110cb57fe5b0490508082106110db57806110dd565b815b93505050505b919050565b80820382811115610f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b80820182811015610f8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8486099050838502925082810391508281101561120f576001820391505b509250929050565b6000818103821680838161122757fe5b04925080858161123357fe5b04945080816000038161124257fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fe4d61725844455856324172626974726167654c6962726172793a205a45524f5f504149525f52455345525645534d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534d61725844455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544d61725844455856324c6962726172793a20494e53554646494349454e545f4c4951554944495459436f6d707574654c697175696469747956616c75653a204c49515549444954595f414d4f554e54a2646970667358221220dcb83611deeb4c1f711018c68d3f3c406735731746d9ac0106134b62cdfaf00264736f6c63430006060033",
      "srcmap": "83:2433:9:-:0;;;199:72;5:9:-1;2:2;;;27:1;24;17:12;2:2;199:72:9;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;199:72:9;246:18;;;;-1:-1:-1;;;;;;246:18:9;;;-1:-1:-1;;;;;83:2433:9;;;;;;;;",
      "srcmap-runtime": "83:2433:9:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;83:2433:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;344:422:9;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;344:422:9;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1291:540;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;1291:540:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1904:610::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;1904:610:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;160:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;831:374;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;831:374:9;;;;;;;;;;;;;;;;;;:::i;344:422::-;522:16;540;575:184;644:7;665:6;685;705:15;734;575:55;:184::i;:::-;568:191;;;;344:422;;;;;;;;:::o;1291:540::-;1524:20;1554;1598:226;1680:7;1701:6;1721;1741:15;1770;1799;1598:68;:226::i;:::-;1591:233;;;;1291:540;;;;;;;;;:::o;1904:610::-;2149:7;2173:14;2190:9;2173:26;;2209:226;2291:7;2312:6;2332;2352:15;2381;2410;2209:68;:226::i;:::-;;;2445:13;2461:9;2487:20;;;;1904:610;-1:-1:-1;;;;;;;1904:610:9:o;160:32::-;;;:::o;831:374::-;977:20;1007;1051:147;1112:7;1133:6;1153;1173:15;1051:47;:147::i;:::-;1044:154;;;;831:374;;;;;;:::o;1720:1161:18:-;1923:16;1941;2038:53;2067:7;2076:6;2084;2038:28;:53::i;:::-;2015:76;;-1:-1:-1;2015:76:18;-1:-1:-1;2110:12:18;;;;;:28;;;2137:1;2126:8;:12;2110:28;2102:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2266:9;2277:16;2297:82;2326:15;2343;2360:8;2370;2297:28;:82::i;:::-;2265:114;;;;2394:8;2406:1;2394:13;2390:71;;;-1:-1:-1;2423:27:18;;-1:-1:-1;2423:27:18;2390:71;2523:4;2519:356;;;2543:14;2560:59;2590:8;2600;2610;2560:29;:59::i;:::-;2633:20;;;;2667:21;;;;-1:-1:-1;2519:356:18;;;2719:14;2736:59;2766:8;2776;2786;2736:29;:59::i;:::-;2843:21;;;;-1:-1:-1;2809:20:18;;;;2519:356;1720:1161;;;;;;;;;;:::o;5037:984::-;5295:20;5325;5362:10;5421:1;5375:48;;5393:7;5375:32;;;:34;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5375:34:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5375:34:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5375:34:18;:48;;;;;-1:-1:-1;5433:19:18;5470:49;5495:7;5504:6;5512;5470:24;:49::i;:::-;5433:87;;5530:10;5543:5;:24;;5566:1;5543:24;;;5551:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5551:12:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5551:12:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5551:12:18;5543:24;5530:37;;5577:16;5596:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5596:18:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5596:18:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5596:18:18;;-1:-1:-1;5682:30:18;;;;;;:53;;;5734:1;5716:15;:19;5682:53;5674:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5791:14;5807;5825:84;5851:7;5860:6;5868;5876:15;5893;5825:25;:84::i;:::-;5790:119;;;;5927:87;5949:9;5960;5971:11;5984:15;6001:5;6008;5927:21;:87::i;:::-;5920:94;;;;;;;;;;5037:984;;;;;;;;;:::o;4128:683::-;4290:20;4312;4345:17;4364;4385:53;4414:7;4423:6;4431;4385:28;:53::i;:::-;4344:94;;;;4448:19;4485:49;4510:7;4519:6;4527;4485:24;:49::i;:::-;4448:87;;4545:10;4604:1;4558:48;;4576:7;4558:32;;;:34;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4558:34:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4558:34:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4558:34:18;:48;;;;;-1:-1:-1;4616:10:18;4558:48;4629:24;;4652:1;4629:24;;;4637:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4637:12:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4637:12:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4637:12:18;4629:24;4616:37;;4663:16;4682:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4682:18:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4682:18:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4682:18:18;;-1:-1:-1;4717:87:18;4739:9;4750;4682:18;4774:15;4791:5;4798;4717:21;:87::i;:::-;4710:94;;;;;;;;;;4128:683;;;;;;;:::o;1250:387:17:-;1343:13;1358;1384:14;1403:26;1414:6;1422;1403:10;:26::i;:::-;1383:46;;;1440:13;1455;1488:32;1496:7;1505:6;1513;1488:7;:32::i;:::-;1473:60;;;:62;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1473:62:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1473:62:17;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1473:62:17;;;;;;;1439:96;;;;;-1:-1:-1;1439:96:17;;-1:-1:-1;1568:16:17;;;;;;;;:62;;1611:8;1621;1568:62;;;1588:8;1598;1568:62;1545:85;;;;-1:-1:-1;1250:387:17;-1:-1:-1;;;;;;;1250:387:17:o;680:903:18:-;865:9;876:16;966:15;911:52;927:8;937:15;954:8;911:15;:52::i;:::-;:70;;-1:-1:-1;992:17:18;1012:22;:8;1025;1012:22;:12;:22;:::i;:::-;992:42;-1:-1:-1;1045:16:18;1064:232;1093:193;1126:19;992:42;1140:4;1126:19;:13;:19;:::i;:::-;1163:4;:40;;1188:15;1163:40;;;1170:15;1163:40;1221:51;1268:3;1222:4;:40;;1247:15;1222:40;;;1229:15;1222:40;1221:46;:51;:46;:51;:::i;:::-;1093:15;:193::i;:::-;1064:15;:232::i;:::-;1045:251;;1306:17;1377:3;1327:4;:46;;1355:18;:8;1368:4;1355:18;:12;:18;:::i;:::-;1327:46;;;1334:18;:8;1347:4;1334:18;:12;:18;:::i;:::-;1326:54;;;;;;1306:74;;1406:9;1395:8;:20;1391:43;;;-1:-1:-1;1425:5:18;;-1:-1:-1;1425:5:18;;-1:-1:-1;1417:17:18;;-1:-1:-1;;1417:17:18;1391:43;1553:23;:8;1566:9;1553:23;:12;:23;:::i;:::-;1542:34;;680:903;;;;;;;;;;:::o;2183:510:17:-;2276:14;2321:1;2310:8;:12;2302:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2400:1;2388:9;:13;:31;;;;;2418:1;2405:10;:14;2388:31;2380:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2474:20;2497:17;:8;2510:3;2497:17;:12;:17;:::i;:::-;2474:40;-1:-1:-1;2524:14:17;2541:31;2474:40;2561:10;2541:31;:19;:31;:::i;:::-;2524:48;-1:-1:-1;2582:16:17;2601:40;2625:15;2601:19;:9;2615:4;2601:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;2582:59;;2675:11;2663:9;:23;;;;;;;2183:510;-1:-1:-1;;;;;;;2183:510:17:o;725:470::-;814:12;839:14;855;873:26;884:6;892;873:10;:26::i;:::-;1033:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1033:32:17;;;;;1023:43;;;;;;939:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;939:246:17;;;;;;;929:257;;;;;;;;;725:470;-1:-1:-1;;;;;725:470:17:o;2956:910:18:-;3172:20;3194;3230:5;:18;;;;;3247:1;3239:5;:9;3230:18;3226:525;;;3264:10;3277:41;3293:24;:9;3307;3293:24;:13;:24;:::i;3277:41::-;3264:54;;3332:14;3349:22;3365:5;3349:15;:22::i;:::-;3332:39;;3397:9;3389:5;:17;3385:356;;;3444:11;3426:15;3491:20;:5;3501:9;3491:20;:9;:20;:::i;:::-;3473:38;-1:-1:-1;3529:16:18;3548:27;3565:9;3548:12;:5;3558:1;3548:12;:9;:12;:::i;:27::-;3529:46;;3593:17;3613:52;3629:10;3641;3653:11;3613:15;:52::i;:::-;3593:72;-1:-1:-1;3697:29:18;:11;3593:72;3697:29;:15;:29;:::i;:::-;3683:43;;3385:356;;;;;3226:525;;;3801:11;3768:30;:9;3782:15;3768:30;:13;:30;:::i;:::-;:44;;;;;;3847:11;3814:30;:9;3828:15;3814:30;:13;:30;:::i;:::-;:44;;;;;;3760:99;;;;2956:910;;;;;;;;;:::o;291:345:17:-;366:14;382;426:6;416:16;;:6;:16;;;;408:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:6;503:15;;:6;:15;;;:53;;541:6;549;503:53;;;522:6;530;503:53;484:72;;-1:-1:-1;484:72:17;-1:-1:-1;574:20:17;;;566:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:345;;;;;:::o;897:373:3:-;999:7;1019:9;1030;1043:13;1051:1;1054;1043:7;:13::i;:::-;1018:38;;;;1067:10;1093:1;1080:15;;;;;1090:1;1087;1080:15;1067:28;;1114:1;1109:2;:6;1105:18;;;1122:1;1117:6;;;;1105:18;1133:7;;;;;1155:6;1151:24;;1174:1;1170;:5;;;;;;1163:12;;;;;;;1151:24;1198:1;1194;:5;1186:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:16;1255:1;1258;1261;1247:7;:16::i;:::-;1240:23;;;;;897:373;;;;;;:::o;419:140:20:-;471:6;497;;;:30;;-1:-1:-1;;512:5:20;;;526:1;521;512:5;521:1;507:15;;;;;:20;497:30;489:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;419:140;;;;:::o;382:1197:0:-;430:7;453:6;449:20;;-1:-1:-1;468:1:0;461:8;;449:20;644:1;667;688:35;682:41;;678:104;;746:3;739:10;;;;;769:2;763:8;678:104;801:19;795:2;:25;791:87;;843:2;836:9;;;;;865:2;859:8;791:87;897:11;891:2;:17;887:79;;931:2;924:9;;;;;953:2;947:8;887:79;985:7;979:2;:13;975:74;;1015:2;1008:9;;;;;1037:1;1031:7;975:74;1068:5;1062:2;:11;1058:71;;1096:1;1089:8;;;;;1117:1;1111:7;1058:71;1148:4;1142:2;:10;1138:70;;1175:1;1168:8;;;;;1196:1;1190:7;1138:70;1227:3;1221:2;:9;1217:47;;1252:1;1246:7;1217:47;1292:1;1286;1282;:5;;;;;;1278:1;:9;1277:16;;1273:20;;1322:1;1316;1312;:5;;;;;;1308:1;:9;1307:16;;1303:20;;1352:1;1346;1342;:5;;;;;;1338:1;:9;1337:16;;1333:20;;1382:1;1376;1372;:5;;;;;;1368:1;:9;1367:16;;1363:20;;1412:1;1406;1402;:5;;;;;;1398:1;:9;1397:16;;1393:20;;1442:1;1436;1432;:5;;;;;;1428:1;:9;1427:16;;1423:20;;1472:1;1466;1462;:5;;;;;;1458:1;:9;1457:16;;1453:20;;1520:10;1537:1;1533;:5;;;;;;1520:18;;1560:2;1556:1;:6;:15;;1569:2;1556:15;;;1565:1;1556:15;1548:24;;;;;382:1197;;;;:::o;286:127:20:-;369:5;;;364:16;;;;356:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;154:126;237:5;;;232:16;;;;224:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;216:206:3;278:9;;;344:2;333:1;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o;428:463::-;530:7;568:2;;;564:6;;;569:1;564:6;580:9;;;;;;;604:4;599:9;;;;;;;;;638:4;630;629:5;;628:14;;;;;685:1;:9;;;713:5;;;709:9;;704:14;737:5;;;733:9;;728:14;761:5;;;757:9;;752:14;785:5;;;781:9;;776:14;809:5;;;805:9;;800:14;833:5;;;829:9;;824:14;857:5;;;853:9;;848:14;;;628;;645:1;628:18;623:24;;;;618:29;;;;879:5;;428:463;-1:-1:-1;;428:463:3:o"
    },
    "contracts/examples/ExampleOracleSimple.sol:ExampleOracleSimple": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "factory",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "PERIOD",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "blockTimestampLast",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "name": "consult",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0Average",
          "outputs": [
            {
              "internalType": "uint224",
              "name": "_x",
              "type": "uint224"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1Average",
          "outputs": [
            {
              "internalType": "uint224",
              "name": "_x",
              "type": "uint224"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "update",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60e06040523480156200001157600080fd5b50604051620015c5380380620015c5833981810160405260608110156200003757600080fd5b50805160208083015160409093015191929190600090620000679085908590859062000d1b6200037d821b17901c565b9050806001600160a01b03166080816001600160a01b031660601b81525050806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015620000c057600080fd5b505afa158015620000d5573d6000803e3d6000fd5b505050506040513d6020811015620000ec57600080fd5b505160601b6001600160601b03191660a0526040805163d21220a760e01b815290516001600160a01b0383169163d21220a7916004808301926020929190829003018186803b1580156200013f57600080fd5b505afa15801562000154573d6000803e3d6000fd5b505050506040513d60208110156200016b57600080fd5b505160601b6001600160601b03191660c05260408051635909c0d560e01b815290516001600160a01b03831691635909c0d5916004808301926020929190829003018186803b158015620001be57600080fd5b505afa158015620001d3573d6000803e3d6000fd5b505050506040513d6020811015620001ea57600080fd5b505160005560408051635a3d549360e01b815290516001600160a01b03831691635a3d5493916004808301926020929190829003018186803b1580156200023057600080fd5b505afa15801562000245573d6000803e3d6000fd5b505050506040513d60208110156200025c57600080fd5b505160015560408051630240bc6b60e21b8152905160009182916001600160a01b03851691630902f1ac916004808301926060929190829003018186803b158015620002a757600080fd5b505afa158015620002bc573d6000803e3d6000fd5b505050506040513d6060811015620002d357600080fd5b50805160208201516040909201516002805463ffffffff191663ffffffff909216919091179055925090506001600160701b038216158015906200031f57506001600160701b03811615155b62000371576040805162461bcd60e51b815260206004820181905260248201527f4578616d706c654f7261636c6553696d706c653a204e4f5f5245534552564553604482015290519081900360640190fd5b5050505050506200053d565b600080806200039685856001600160e01b036200045a16565b604080516001600160601b0319606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080826001600160a01b0316846001600160a01b03161415620004b05760405162461bcd60e51b8152600401808060200182810382526025815260200180620015a06025913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610620004d2578284620004d5565b83835b90925090506001600160a01b03821662000536576040805162461bcd60e51b815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b60805160601c60a05160601c60c05160601c6110236200057d600039806102a952806105da5250806101cd52806101f35250806103e452506110236000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063a2e6204511610076578063b4d1d7951161005b578063b4d1d7951461019a578063c5700a02146101a2578063d21220a7146101c3576100be565b8063a2e6204514610188578063a6bb453914610192576100be565b80635909c0d5116100a75780635909c0d51461013f5780635a3d5493146101475780635e6aaf2c1461014f576100be565b80630dfe1681146100c35780633ddac953146100f4575b600080fd5b6100cb6101cb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61012d6004803603604081101561010a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356101ef565b60408051918252519081900360200190f35b61012d6103aa565b61012d6103b0565b6101576103b6565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101906103da565b005b6101576105a1565b61012d6105c5565b6101aa6105cc565b6040805163ffffffff9092168252519081900360200190f35b6100cb6105d8565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156102a75760408051602081019091526003547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815261028c90610287908463ffffffff6105fc16565b6106bf565b71ffffffffffffffffffffffffffffffffffff1690506103a4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461034b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610f806022913960400191505060405180910390fd5b60408051602081019091526004547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815261038d90610287908463ffffffff6105fc16565b71ffffffffffffffffffffffffffffffffffff1690505b92915050565b60005481565b60015481565b6004547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b60008060006104087f00000000000000000000000000000000000000000000000000000000000000006106c6565b600254929550909350915063ffffffff90811682039062015180908216101561047c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610fc76027913960400191505060405180910390fd5b60405180602001604052808263ffffffff1660005487038161049a57fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091529051600380547fffffffff0000000000000000000000000000000000000000000000000000000016919092161790556040805160208101909152600154819063ffffffff84169086038161050e57fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091529051600480547fffffffff00000000000000000000000000000000000000000000000000000000169190921617905550600092909255600155600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff909216919091179055565b6003547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b6201518081565b60025463ffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b610604610cf6565b600082158061063f57505082517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168281029083828161063c57fe5b04145b6106aa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b5160701c90565b60008060006106d361094d565b90508373ffffffffffffffffffffffffffffffffffffffff16635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561071b57600080fd5b505afa15801561072f573d6000803e3d6000fd5b505050506040513d602081101561074557600080fd5b5051604080517f5a3d5493000000000000000000000000000000000000000000000000000000008152905191945073ffffffffffffffffffffffffffffffffffffffff861691635a3d549391600480820192602092909190829003018186803b1580156107b157600080fd5b505afa1580156107c5573d6000803e3d6000fd5b505050506040513d60208110156107db57600080fd5b5051604080517f0902f1ac00000000000000000000000000000000000000000000000000000000815290519193506000918291829173ffffffffffffffffffffffffffffffffffffffff891691630902f1ac916004808301926060929190829003018186803b15801561084d57600080fd5b505afa158015610861573d6000803e3d6000fd5b505050506040513d606081101561087757600080fd5b5080516020820151604090920151909450909250905063ffffffff808216908516146109435780840363ffffffff81166108c46dffffffffffffffffffffffffffff808616908716610957565b600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602870196508063ffffffff1661091c856dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16610957565b517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16029590950194505b5050509193909250565b63ffffffff421690565b61095f610d09565b600082116109b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610f5a6026913960400191505060405180910390fd5b826109d257506040805160208101909152600081526103a4565b71ffffffffffffffffffffffffffffffffffff8311610abd57600082607085901b816109fa57fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610a8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509150506103a4565b6000610ad9846e01000000000000000000000000000085610b66565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610a8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6000806000610b758686610c3b565b9150915060008480610b8357fe5b868809905082811115610b97576001820391505b918290039181610bb557848381610baa57fe5b049350505050610c34565b848210610c2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610c2e838387610c86565b93505050505b9392505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015610c7e576001820391505b509250929050565b60008181038216808381610c9657fe5b049250808581610ca257fe5b049450808160000381610cb157fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b6040518060200160405280600081525090565b60408051602081019091526000815290565b6000806000610d2a8585610e06565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610fa26025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610ec8578284610ecb565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610f5257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b925092905056fe4669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f4578616d706c654f7261636c6553696d706c653a20494e56414c49445f544f4b454e4d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534578616d706c654f7261636c6553696d706c653a20504552494f445f4e4f545f454c4150534544a26469706673582212201656e83c157454b214d212c290a58f58731eedff40975d2fd516842a12ab9cb364736f6c634300060600334d61725844455856324c6962726172793a204944454e544943414c5f414444524553534553",
          "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x15C5 CODESIZE SUB DUP1 PUSH3 0x15C5 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP1 SWAP4 ADD MLOAD SWAP2 SWAP3 SWAP2 SWAP1 PUSH1 0x0 SWAP1 PUSH3 0x67 SWAP1 DUP6 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH3 0xD1B PUSH3 0x37D DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDFE1681 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xD21220A7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xD21220A7 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x154 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5909C0D5 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0x5909C0D5 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x5A3D5493 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0x5A3D5493 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x230 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x245 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x240BC6B PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x902F1AC SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD PUSH1 0x2 DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP3 AND ISZERO DUP1 ISZERO SWAP1 PUSH3 0x31F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP2 AND ISZERO ISZERO JUMPDEST PUSH3 0x371 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4578616D706C654F7261636C6553696D706C653A204E4F5F5245534552564553 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP POP PUSH3 0x53D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH3 0x396 DUP6 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x45A AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x236595447338C75B512D89A54E3B5160E3A38C8FFE13F0E88C634CA037665806 PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x4B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x15A0 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH3 0x4D2 JUMPI DUP3 DUP5 PUSH3 0x4D5 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x536 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x1023 PUSH3 0x57D PUSH1 0x0 CODECOPY DUP1 PUSH2 0x2A9 MSTORE DUP1 PUSH2 0x5DA MSTORE POP DUP1 PUSH2 0x1CD MSTORE DUP1 PUSH2 0x1F3 MSTORE POP DUP1 PUSH2 0x3E4 MSTORE POP PUSH2 0x1023 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA2E62045 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xB4D1D795 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xB4D1D795 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xC5700A02 EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x1C3 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0xA2E62045 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0xA6BB4539 EQ PUSH2 0x192 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x5909C0D5 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x5E6AAF2C EQ PUSH2 0x14F JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0xDFE1681 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x3DDAC953 EQ PUSH2 0xF4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB PUSH2 0x1CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12D PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x12D PUSH2 0x3B0 JUMP JUMPDEST PUSH2 0x157 PUSH2 0x3B6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x190 PUSH2 0x3DA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x157 PUSH2 0x5A1 JUMP JUMPDEST PUSH2 0x12D PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCB PUSH2 0x5D8 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2A7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH2 0x28C SWAP1 PUSH2 0x287 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x5FC AND JUMP JUMPDEST PUSH2 0x6BF JUMP JUMPDEST PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH2 0x3A4 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x34B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF80 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH2 0x38D SWAP1 PUSH2 0x287 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x5FC AND JUMP JUMPDEST PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x408 PUSH32 0x0 PUSH2 0x6C6 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP3 SUB SWAP1 PUSH3 0x15180 SWAP1 DUP3 AND LT ISZERO PUSH2 0x47C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFC7 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0x0 SLOAD DUP8 SUB DUP2 PUSH2 0x49A JUMPI INVALID JUMPDEST DIV PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x3 DUP1 SLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 SLOAD DUP2 SWAP1 PUSH4 0xFFFFFFFF DUP5 AND SWAP1 DUP7 SUB DUP2 PUSH2 0x50E JUMPI INVALID JUMPDEST DIV PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x4 DUP1 SLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE POP PUSH1 0x0 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x1 SSTORE PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 AND PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH3 0x15180 DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x604 PUSH2 0xCF6 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x63F JUMPI POP POP DUP3 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP2 MUL SWAP1 DUP4 DUP3 DUP2 PUSH2 0x63C JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x6AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6D756C3A206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST MLOAD PUSH1 0x70 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x6D3 PUSH2 0x94D JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5909C0D5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x71B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x72F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x5A3D549300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP2 PUSH4 0x5A3D5493 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x902F1AC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0x902F1AC SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x84D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x861 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x877 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP1 DUP6 AND EQ PUSH2 0x943 JUMPI DUP1 DUP5 SUB PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x8C4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND SWAP1 DUP8 AND PUSH2 0x957 JUMP JUMPDEST PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL DUP8 ADD SWAP7 POP DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x91C DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x957 JUMP JUMPDEST MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL SWAP6 SWAP1 SWAP6 ADD SWAP5 POP JUMPDEST POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH4 0xFFFFFFFF TIMESTAMP AND SWAP1 JUMP JUMPDEST PUSH2 0x95F PUSH2 0xD09 JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x9B8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF5A PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x9D2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x3A4 JUMP JUMPDEST PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0xABD JUMPI PUSH1 0x0 DUP3 PUSH1 0x70 DUP6 SWAP1 SHL DUP2 PUSH2 0x9FA JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA88 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP2 POP POP PUSH2 0x3A4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD9 DUP5 PUSH15 0x10000000000000000000000000000 DUP6 PUSH2 0xB66 JUMP JUMPDEST SWAP1 POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA88 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xB75 DUP7 DUP7 PUSH2 0xC3B JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xB83 JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xB97 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0xBB5 JUMPI DUP5 DUP4 DUP2 PUSH2 0xBAA JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0xC34 JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0xC23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xC2E DUP4 DUP4 DUP8 PUSH2 0xC86 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0xC7E JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0xC96 JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0xCA2 JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0xCB1 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xD2A DUP6 DUP6 PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x236595447338C75B512D89A54E3B5160E3A38C8FFE13F0E88C634CA037665806 PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xE8E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFA2 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xEC8 JUMPI DUP3 DUP5 PUSH2 0xECB JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xF52 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID CHAINID PUSH10 0x786564506F696E743A3A PUSH7 0x72616374696F6E GASPRICE KECCAK256 PUSH5 0x6976697369 PUSH16 0x6E206279207A65726F4578616D706C65 0x4F PUSH19 0x61636C6553696D706C653A20494E56414C4944 0x5F SLOAD 0x4F 0x4B GASLIMIT 0x4E 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494445 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 GASLIMIT PUSH25 0x616D706C654F7261636C6553696D706C653A20504552494F44 0x5F 0x4E 0x4F SLOAD 0x5F GASLIMIT 0x4C COINBASE POP MSTORE8 GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND JUMP 0xE8 EXTCODECOPY ISZERO PUSH21 0x54B214D212C290A58F58731EEDFF40975D2FD51684 0x2A SLT 0xAB SWAP13 0xB3 PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494445 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 ",
          "sourceMap": "555:2638:10:-:0;;;990:743;5:9:-1;2:2;;;27:1;24;17:12;2:2;990:743:10;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;990:743:10;;;;;;;;;;;;;;;;1068:20;;1106:49;;990:743;;;;;;1106:24;;;;;:49;;:::i;:::-;1068:88;;1173:5;-1:-1:-1;;;;;1166:12:10;;;-1:-1:-1;;;;;1166:12:10;;;;;;;1197:5;-1:-1:-1;;;;;1197:12:10;;:14;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1197:14:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1197:14:10;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1197:14:10;1188:23;;-1:-1:-1;;;;;;1188:23:10;;;1230:14;;;-1:-1:-1;;;1230:14:10;;;;-1:-1:-1;;;;;1230:12:10;;;;;:14;;;;;1197;;1230;;;;;;;:12;:14;;;2:2:-1;;;;27:1;24;17:12;2:2;1230:14:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1230:14:10;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1230:14:10;1221:23;;-1:-1:-1;;;;;;1221:23:10;;;1277:28;;;-1:-1:-1;;;1277:28:10;;;;-1:-1:-1;;;;;1277:26:10;;;;;:28;;;;;1230:14;;1277:28;;;;;;;:26;:28;;;2:2:-1;;;;27:1;24;17:12;2:2;1277:28:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1277:28:10;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1277:28:10;1254:20;:51;1391:28;;;-1:-1:-1;;;1391:28:10;;;;-1:-1:-1;;;;;1391:26:10;;;;;:28;;;;;1277;;1391;;;;;;;:26;:28;;;2:2:-1;;;;27:1;24;17:12;2:2;1391:28:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1391:28:10;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1391:28:10;1368:20;:51;1577:19;;;-1:-1:-1;;;1577:19:10;;;;1482:16;;;;-1:-1:-1;;;;;1577:17:10;;;;;:19;;;;;;;;;;;;;;:17;:19;;;2:2:-1;;;;27:1;24;17:12;2:2;1577:19:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1577:19:10;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1577:19:10;;;;;;;;;;;1555:18;1534:62;;-1:-1:-1;;1534:62:10;;;;;;;;;;;1577:19;-1:-1:-1;1577:19:10;-1:-1:-1;;;;;;1614:13:10;;;;;;:30;;-1:-1:-1;;;;;;1631:13:10;;;;1614:30;1606:75;;;;;-1:-1:-1;;;1606:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;990:743;;;;;;555:2638;;725:470:17;814:12;;;873:26;884:6;892;-1:-1:-1;;;;;873:10:17;:26;:::i;:::-;1033:32;;;-1:-1:-1;;;;;;1033:32:17;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1033:32:17;;;;;1023:43;;;;;;939:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;939:246:17;;;;;;;929:257;;;;;;;;;725:470;-1:-1:-1;;;;;725:470:17:o;291:345::-;366:14;382;426:6;-1:-1:-1;;;;;416:16:17;:6;-1:-1:-1;;;;;416:16:17;;;408:66;;;;-1:-1:-1;;;408:66:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:6;-1:-1:-1;;;;;503:15:17;:6;-1:-1:-1;;;;;503:15:17;;:53;;541:6;549;503:53;;;522:6;530;503:53;484:72;;-1:-1:-1;484:72:17;-1:-1:-1;;;;;;574:20:17;;566:63;;;;;-1:-1:-1;;;566:63:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:345;;;;;:::o;555:2638:10:-;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {
            "5440": [
              {
                "length": 32,
                "start": 996
              }
            ],
            "5442": [
              {
                "length": 32,
                "start": 461
              },
              {
                "length": 32,
                "start": 499
              }
            ],
            "5444": [
              {
                "length": 32,
                "start": 681
              },
              {
                "length": 32,
                "start": 1498
              }
            ]
          },
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100be5760003560e01c8063a2e6204511610076578063b4d1d7951161005b578063b4d1d7951461019a578063c5700a02146101a2578063d21220a7146101c3576100be565b8063a2e6204514610188578063a6bb453914610192576100be565b80635909c0d5116100a75780635909c0d51461013f5780635a3d5493146101475780635e6aaf2c1461014f576100be565b80630dfe1681146100c35780633ddac953146100f4575b600080fd5b6100cb6101cb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61012d6004803603604081101561010a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356101ef565b60408051918252519081900360200190f35b61012d6103aa565b61012d6103b0565b6101576103b6565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101906103da565b005b6101576105a1565b61012d6105c5565b6101aa6105cc565b6040805163ffffffff9092168252519081900360200190f35b6100cb6105d8565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156102a75760408051602081019091526003547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815261028c90610287908463ffffffff6105fc16565b6106bf565b71ffffffffffffffffffffffffffffffffffff1690506103a4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461034b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610f806022913960400191505060405180910390fd5b60408051602081019091526004547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815261038d90610287908463ffffffff6105fc16565b71ffffffffffffffffffffffffffffffffffff1690505b92915050565b60005481565b60015481565b6004547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b60008060006104087f00000000000000000000000000000000000000000000000000000000000000006106c6565b600254929550909350915063ffffffff90811682039062015180908216101561047c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610fc76027913960400191505060405180910390fd5b60405180602001604052808263ffffffff1660005487038161049a57fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091529051600380547fffffffff0000000000000000000000000000000000000000000000000000000016919092161790556040805160208101909152600154819063ffffffff84169086038161050e57fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091529051600480547fffffffff00000000000000000000000000000000000000000000000000000000169190921617905550600092909255600155600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff909216919091179055565b6003547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b6201518081565b60025463ffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b610604610cf6565b600082158061063f57505082517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168281029083828161063c57fe5b04145b6106aa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b5160701c90565b60008060006106d361094d565b90508373ffffffffffffffffffffffffffffffffffffffff16635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561071b57600080fd5b505afa15801561072f573d6000803e3d6000fd5b505050506040513d602081101561074557600080fd5b5051604080517f5a3d5493000000000000000000000000000000000000000000000000000000008152905191945073ffffffffffffffffffffffffffffffffffffffff861691635a3d549391600480820192602092909190829003018186803b1580156107b157600080fd5b505afa1580156107c5573d6000803e3d6000fd5b505050506040513d60208110156107db57600080fd5b5051604080517f0902f1ac00000000000000000000000000000000000000000000000000000000815290519193506000918291829173ffffffffffffffffffffffffffffffffffffffff891691630902f1ac916004808301926060929190829003018186803b15801561084d57600080fd5b505afa158015610861573d6000803e3d6000fd5b505050506040513d606081101561087757600080fd5b5080516020820151604090920151909450909250905063ffffffff808216908516146109435780840363ffffffff81166108c46dffffffffffffffffffffffffffff808616908716610957565b600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602870196508063ffffffff1661091c856dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16610957565b517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16029590950194505b5050509193909250565b63ffffffff421690565b61095f610d09565b600082116109b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610f5a6026913960400191505060405180910390fd5b826109d257506040805160208101909152600081526103a4565b71ffffffffffffffffffffffffffffffffffff8311610abd57600082607085901b816109fa57fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610a8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509150506103a4565b6000610ad9846e01000000000000000000000000000085610b66565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610a8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6000806000610b758686610c3b565b9150915060008480610b8357fe5b868809905082811115610b97576001820391505b918290039181610bb557848381610baa57fe5b049350505050610c34565b848210610c2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610c2e838387610c86565b93505050505b9392505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015610c7e576001820391505b509250929050565b60008181038216808381610c9657fe5b049250808581610ca257fe5b049450808160000381610cb157fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b6040518060200160405280600081525090565b60408051602081019091526000815290565b6000806000610d2a8585610e06565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610fa26025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610ec8578284610ecb565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610f5257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b925092905056fe4669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f4578616d706c654f7261636c6553696d706c653a20494e56414c49445f544f4b454e4d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534578616d706c654f7261636c6553696d706c653a20504552494f445f4e4f545f454c4150534544a26469706673582212201656e83c157454b214d212c290a58f58731eedff40975d2fd516842a12ab9cb364736f6c63430006060033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA2E62045 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xB4D1D795 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xB4D1D795 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0xC5700A02 EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x1C3 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0xA2E62045 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0xA6BB4539 EQ PUSH2 0x192 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x5909C0D5 GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x5E6AAF2C EQ PUSH2 0x14F JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0xDFE1681 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x3DDAC953 EQ PUSH2 0xF4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB PUSH2 0x1CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12D PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x12D PUSH2 0x3B0 JUMP JUMPDEST PUSH2 0x157 PUSH2 0x3B6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x190 PUSH2 0x3DA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x157 PUSH2 0x5A1 JUMP JUMPDEST PUSH2 0x12D PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xCB PUSH2 0x5D8 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2A7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH2 0x28C SWAP1 PUSH2 0x287 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x5FC AND JUMP JUMPDEST PUSH2 0x6BF JUMP JUMPDEST PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH2 0x3A4 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x34B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF80 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH2 0x38D SWAP1 PUSH2 0x287 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x5FC AND JUMP JUMPDEST PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x408 PUSH32 0x0 PUSH2 0x6C6 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP3 SUB SWAP1 PUSH3 0x15180 SWAP1 DUP3 AND LT ISZERO PUSH2 0x47C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFC7 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0x0 SLOAD DUP8 SUB DUP2 PUSH2 0x49A JUMPI INVALID JUMPDEST DIV PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x3 DUP1 SLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 SLOAD DUP2 SWAP1 PUSH4 0xFFFFFFFF DUP5 AND SWAP1 DUP7 SUB DUP2 PUSH2 0x50E JUMPI INVALID JUMPDEST DIV PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x4 DUP1 SLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE POP PUSH1 0x0 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x1 SSTORE PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 AND PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH3 0x15180 DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x604 PUSH2 0xCF6 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x63F JUMPI POP POP DUP3 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP2 MUL SWAP1 DUP4 DUP3 DUP2 PUSH2 0x63C JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x6AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6D756C3A206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST MLOAD PUSH1 0x70 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x6D3 PUSH2 0x94D JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5909C0D5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x71B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x72F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x5A3D549300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP2 PUSH4 0x5A3D5493 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x902F1AC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0x902F1AC SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x84D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x861 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x877 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP1 DUP6 AND EQ PUSH2 0x943 JUMPI DUP1 DUP5 SUB PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x8C4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND SWAP1 DUP8 AND PUSH2 0x957 JUMP JUMPDEST PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL DUP8 ADD SWAP7 POP DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x91C DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x957 JUMP JUMPDEST MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL SWAP6 SWAP1 SWAP6 ADD SWAP5 POP JUMPDEST POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH4 0xFFFFFFFF TIMESTAMP AND SWAP1 JUMP JUMPDEST PUSH2 0x95F PUSH2 0xD09 JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x9B8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xF5A PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x9D2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x3A4 JUMP JUMPDEST PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0xABD JUMPI PUSH1 0x0 DUP3 PUSH1 0x70 DUP6 SWAP1 SHL DUP2 PUSH2 0x9FA JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA88 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP2 POP POP PUSH2 0x3A4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD9 DUP5 PUSH15 0x10000000000000000000000000000 DUP6 PUSH2 0xB66 JUMP JUMPDEST SWAP1 POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA88 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xB75 DUP7 DUP7 PUSH2 0xC3B JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xB83 JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xB97 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0xBB5 JUMPI DUP5 DUP4 DUP2 PUSH2 0xBAA JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0xC34 JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0xC23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xC2E DUP4 DUP4 DUP8 PUSH2 0xC86 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0xC7E JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0xC96 JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0xCA2 JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0xCB1 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xD2A DUP6 DUP6 PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x236595447338C75B512D89A54E3B5160E3A38C8FFE13F0E88C634CA037665806 PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xE8E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFA2 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xEC8 JUMPI DUP3 DUP5 PUSH2 0xECB JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xF52 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID CHAINID PUSH10 0x786564506F696E743A3A PUSH7 0x72616374696F6E GASPRICE KECCAK256 PUSH5 0x6976697369 PUSH16 0x6E206279207A65726F4578616D706C65 0x4F PUSH19 0x61636C6553696D706C653A20494E56414C4944 0x5F SLOAD 0x4F 0x4B GASLIMIT 0x4E 0x4D PUSH2 0x7258 DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494445 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 GASLIMIT PUSH25 0x616D706C654F7261636C6553696D706C653A20504552494F44 0x5F 0x4E 0x4F SLOAD 0x5F GASLIMIT 0x4C COINBASE POP MSTORE8 GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND JUMP 0xE8 EXTCODECOPY ISZERO PUSH21 0x54B214D212C290A58F58731EEDFF40975D2FD51684 0x2A SLT 0xAB SWAP13 0xB3 PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "555:2638:10:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;555:2638:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;699:31:10;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2834:357;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2834:357:10;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;774:35;;;:::i;815:::-;;;:::i;942:41::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1739:988;;;:::i;:::-;;895:41;;;:::i;619:38::-;;;:::i;856:33::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;736:31;;;:::i;699:::-;;;:::o;2834:357::-;2904:14;2943:6;2934:15;;:5;:15;;;2930:255;;;2977:17;;;;;;;;;:13;:17;;;;;:39;;:27;;2995:8;2977:27;:17;:27;:::i;:::-;:37;:39::i;:::-;2965:51;;;;2930:255;;;3064:6;3055:15;;:5;:15;;;3047:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3135:17;;;;;;;;;:13;:17;;;;;:39;;:27;;3153:8;3135:27;:17;:27;:::i;:39::-;3123:51;;;;2930:255;2834:357;;;;:::o;774:35::-;;;;:::o;815:::-;;;;:::o;942:41::-;;;;;;:::o;1739:988::-;1777:21;1800;1823;1860:61;1915:4;1860:46;:61::i;:::-;1969:18;;1776:145;;-1:-1:-1;1776:145:10;;-1:-1:-1;1776:145:10;-1:-1:-1;1969:18:10;;;;1952:35;;;649:8;2110:21;;;;;2102:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2378:86;;;;;;;;2451:11;2407:55;;2427:20;;2408:16;:39;2407:55;;;;;;2378:86;;;;;;;2362:102;;:13;:102;;;;;;;;;;;2490:86;;;;;;;;;-1:-1:-1;2539:20:10;2490:86;;2519:55;;;;2520:39;;2519:55;;;;;;2490:86;;;;;;;2474:102;;:13;:102;;;;;;;;;;;-1:-1:-1;;2587:39:10;;;;-1:-1:-1;2636:39:10;2685:18;:35;;;;;;;;;;;;;;1739:988::o;895:41::-;;;;;;:::o;619:38::-;649:8;619:38;:::o;856:33::-;;;;;;:::o;736:31::-;;;:::o;1694:237:2:-;1764:16;;:::i;:::-;1792:9;1823:6;;;:42;;-1:-1:-1;;1858:7:2;;1833:32;;1838:11;;;;1853:1;1838:11;1853:1;1833:21;;;;;:32;1823:42;1815:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:12;;;;;;;;;;;;;1694:237;-1:-1:-1;;;1694:237:2:o;1472:128::-;1571:7;531:3;1571:21;;1472:128::o;666:1040:19:-;750:21;773;796;846:23;:21;:23::i;:::-;829:40;;913:4;898:41;;;:43;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;898:43:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;898:43:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;898:43:19;970;;;;;;;;898;;-1:-1:-1;970:41:19;;;;;;:43;;;;;898;;970;;;;;;;;:41;:43;;;2:2:-1;;;;27:1;24;17:12;2:2;970:43:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;970:43:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;970:43:19;1190:34;;;;;;;;970:43;;-1:-1:-1;1125:16:19;;;;;;1190:32;;;;;;:34;;;;;;;;;;;;;;:32;:34;;;2:2:-1;;;;27:1;24;17:12;2:2;1190:34:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1190:34:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1190:34:19;;;;;;;;;;;;;-1:-1:-1;1190:34:19;;-1:-1:-1;1190:34:19;-1:-1:-1;1238:36:19;;;;;;;;1234:466;;1358:35;;;1501:62;;;1506:39;;;;;;;;:19;:39::i;:::-;:42;;;1501:48;;:62;1481:82;;;;1678:11;1627:62;;1632:39;1652:8;1632:39;;1662:8;1632:39;;:19;:39::i;:::-;:42;1627:48;;:62;1607:82;;;;;-1:-1:-1;1234:466:19;666:1040;;;;;;;;:::o;442:121::-;530:25;:15;:25;;442:121::o;4526:706:2:-;4607:16;;:::i;:::-;4657:1;4643:11;:15;4635:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4715:14;4711:50;;-1:-1:-1;4738:23:2;;;;;;;;;-1:-1:-1;4738:23:2;;4731:30;;4711:50;4776:24;;;4772:454;;4816:14;4861:11;531:3;4834:23;;;4861:11;4833:39;;;;;;-1:-1:-1;4894:21:2;;;;4886:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4971:26;;;;;;;;4989:6;4971:26;;;;;4964:33;;;;;4772:454;5028:14;5045:45;5061:9;571:31;5078:11;5045:15;:45::i;:::-;5028:62;-1:-1:-1;5112:21:2;;;;5104:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;897:373:3;999:7;1019:9;1030;1043:13;1051:1;1054;1043:7;:13::i;:::-;1018:38;;;;1067:10;1093:1;1080:15;;;;;1090:1;1087;1080:15;1067:28;;1114:1;1109:2;:6;1105:18;;;1122:1;1117:6;;;;1105:18;1133:7;;;;;1155:6;1151:24;;1174:1;1170;:5;;;;;;1163:12;;;;;;;1151:24;1198:1;1194;:5;1186:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:16;1255:1;1258;1261;1247:7;:16::i;:::-;1240:23;;;;;897:373;;;;;;:::o;216:206::-;278:9;;;344:2;333:1;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o;428:463::-;530:7;568:2;;;564:6;;;569:1;564:6;580:9;;;;;;;604:4;599:9;;;;;;;;;638:4;630;629:5;;628:14;;;;;685:1;:9;;;713:5;;;709:9;;704:14;737:5;;;733:9;;728:14;761:5;;;757:9;;752:14;785:5;;;781:9;;776:14;809:5;;;805:9;;800:14;833:5;;;829:9;;824:14;857:5;;;853:9;;848:14;;;628;;645:1;628:18;623:24;;;;618:29;;;;879:5;;428:463;-1:-1:-1;;428:463:3:o;555:2638:10:-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;555:2638:10;;;:::o;725:470:17:-;814:12;839:14;855;873:26;884:6;892;873:10;:26::i;:::-;1033:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1033:32:17;;;;;1023:43;;;;;;939:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;939:246:17;;;;;;;929:257;;;;;;;;;725:470;-1:-1:-1;;;;;725:470:17:o;291:345::-;366:14;382;426:6;416:16;;:6;:16;;;;408:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:6;503:15;;:6;:15;;;:53;;541:6;549;503:53;;;522:6;530;503:53;484:72;;-1:-1:-1;484:72:17;-1:-1:-1;574:20:17;;;566:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:345;;;;;:::o"
        }
      },
      "interface": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "factory",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "PERIOD",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "blockTimestampLast",
          "outputs": [
            {
              "internalType": "uint32",
              "name": "",
              "type": "uint32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "name": "consult",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0Average",
          "outputs": [
            {
              "internalType": "uint224",
              "name": "_x",
              "type": "uint224"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1Average",
          "outputs": [
            {
              "internalType": "uint224",
              "name": "_x",
              "type": "uint224"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "update",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "60e06040523480156200001157600080fd5b50604051620015c5380380620015c5833981810160405260608110156200003757600080fd5b50805160208083015160409093015191929190600090620000679085908590859062000d1b6200037d821b17901c565b9050806001600160a01b03166080816001600160a01b031660601b81525050806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015620000c057600080fd5b505afa158015620000d5573d6000803e3d6000fd5b505050506040513d6020811015620000ec57600080fd5b505160601b6001600160601b03191660a0526040805163d21220a760e01b815290516001600160a01b0383169163d21220a7916004808301926020929190829003018186803b1580156200013f57600080fd5b505afa15801562000154573d6000803e3d6000fd5b505050506040513d60208110156200016b57600080fd5b505160601b6001600160601b03191660c05260408051635909c0d560e01b815290516001600160a01b03831691635909c0d5916004808301926020929190829003018186803b158015620001be57600080fd5b505afa158015620001d3573d6000803e3d6000fd5b505050506040513d6020811015620001ea57600080fd5b505160005560408051635a3d549360e01b815290516001600160a01b03831691635a3d5493916004808301926020929190829003018186803b1580156200023057600080fd5b505afa15801562000245573d6000803e3d6000fd5b505050506040513d60208110156200025c57600080fd5b505160015560408051630240bc6b60e21b8152905160009182916001600160a01b03851691630902f1ac916004808301926060929190829003018186803b158015620002a757600080fd5b505afa158015620002bc573d6000803e3d6000fd5b505050506040513d6060811015620002d357600080fd5b50805160208201516040909201516002805463ffffffff191663ffffffff909216919091179055925090506001600160701b038216158015906200031f57506001600160701b03811615155b62000371576040805162461bcd60e51b815260206004820181905260248201527f4578616d706c654f7261636c6553696d706c653a204e4f5f5245534552564553604482015290519081900360640190fd5b5050505050506200053d565b600080806200039685856001600160e01b036200045a16565b604080516001600160601b0319606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080826001600160a01b0316846001600160a01b03161415620004b05760405162461bcd60e51b8152600401808060200182810382526025815260200180620015a06025913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610620004d2578284620004d5565b83835b90925090506001600160a01b03821662000536576040805162461bcd60e51b815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b60805160601c60a05160601c60c05160601c6110236200057d600039806102a952806105da5250806101cd52806101f35250806103e452506110236000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063a2e6204511610076578063b4d1d7951161005b578063b4d1d7951461019a578063c5700a02146101a2578063d21220a7146101c3576100be565b8063a2e6204514610188578063a6bb453914610192576100be565b80635909c0d5116100a75780635909c0d51461013f5780635a3d5493146101475780635e6aaf2c1461014f576100be565b80630dfe1681146100c35780633ddac953146100f4575b600080fd5b6100cb6101cb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61012d6004803603604081101561010a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356101ef565b60408051918252519081900360200190f35b61012d6103aa565b61012d6103b0565b6101576103b6565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101906103da565b005b6101576105a1565b61012d6105c5565b6101aa6105cc565b6040805163ffffffff9092168252519081900360200190f35b6100cb6105d8565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156102a75760408051602081019091526003547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815261028c90610287908463ffffffff6105fc16565b6106bf565b71ffffffffffffffffffffffffffffffffffff1690506103a4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461034b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610f806022913960400191505060405180910390fd5b60408051602081019091526004547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815261038d90610287908463ffffffff6105fc16565b71ffffffffffffffffffffffffffffffffffff1690505b92915050565b60005481565b60015481565b6004547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b60008060006104087f00000000000000000000000000000000000000000000000000000000000000006106c6565b600254929550909350915063ffffffff90811682039062015180908216101561047c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610fc76027913960400191505060405180910390fd5b60405180602001604052808263ffffffff1660005487038161049a57fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091529051600380547fffffffff0000000000000000000000000000000000000000000000000000000016919092161790556040805160208101909152600154819063ffffffff84169086038161050e57fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091529051600480547fffffffff00000000000000000000000000000000000000000000000000000000169190921617905550600092909255600155600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff909216919091179055565b6003547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b6201518081565b60025463ffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b610604610cf6565b600082158061063f57505082517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168281029083828161063c57fe5b04145b6106aa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b5160701c90565b60008060006106d361094d565b90508373ffffffffffffffffffffffffffffffffffffffff16635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561071b57600080fd5b505afa15801561072f573d6000803e3d6000fd5b505050506040513d602081101561074557600080fd5b5051604080517f5a3d5493000000000000000000000000000000000000000000000000000000008152905191945073ffffffffffffffffffffffffffffffffffffffff861691635a3d549391600480820192602092909190829003018186803b1580156107b157600080fd5b505afa1580156107c5573d6000803e3d6000fd5b505050506040513d60208110156107db57600080fd5b5051604080517f0902f1ac00000000000000000000000000000000000000000000000000000000815290519193506000918291829173ffffffffffffffffffffffffffffffffffffffff891691630902f1ac916004808301926060929190829003018186803b15801561084d57600080fd5b505afa158015610861573d6000803e3d6000fd5b505050506040513d606081101561087757600080fd5b5080516020820151604090920151909450909250905063ffffffff808216908516146109435780840363ffffffff81166108c46dffffffffffffffffffffffffffff808616908716610957565b600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602870196508063ffffffff1661091c856dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16610957565b517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16029590950194505b5050509193909250565b63ffffffff421690565b61095f610d09565b600082116109b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610f5a6026913960400191505060405180910390fd5b826109d257506040805160208101909152600081526103a4565b71ffffffffffffffffffffffffffffffffffff8311610abd57600082607085901b816109fa57fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610a8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509150506103a4565b6000610ad9846e01000000000000000000000000000085610b66565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610a8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6000806000610b758686610c3b565b9150915060008480610b8357fe5b868809905082811115610b97576001820391505b918290039181610bb557848381610baa57fe5b049350505050610c34565b848210610c2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610c2e838387610c86565b93505050505b9392505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015610c7e576001820391505b509250929050565b60008181038216808381610c9657fe5b049250808581610ca257fe5b049450808160000381610cb157fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b6040518060200160405280600081525090565b60408051602081019091526000815290565b6000806000610d2a8585610e06565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610fa26025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610ec8578284610ecb565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610f5257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b925092905056fe4669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f4578616d706c654f7261636c6553696d706c653a20494e56414c49445f544f4b454e4d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534578616d706c654f7261636c6553696d706c653a20504552494f445f4e4f545f454c4150534544a26469706673582212201656e83c157454b214d212c290a58f58731eedff40975d2fd516842a12ab9cb364736f6c634300060600334d61725844455856324c6962726172793a204944454e544943414c5f414444524553534553",
      "bin": "60e06040523480156200001157600080fd5b50604051620015c5380380620015c5833981810160405260608110156200003757600080fd5b50805160208083015160409093015191929190600090620000679085908590859062000d1b6200037d821b17901c565b9050806001600160a01b03166080816001600160a01b031660601b81525050806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015620000c057600080fd5b505afa158015620000d5573d6000803e3d6000fd5b505050506040513d6020811015620000ec57600080fd5b505160601b6001600160601b03191660a0526040805163d21220a760e01b815290516001600160a01b0383169163d21220a7916004808301926020929190829003018186803b1580156200013f57600080fd5b505afa15801562000154573d6000803e3d6000fd5b505050506040513d60208110156200016b57600080fd5b505160601b6001600160601b03191660c05260408051635909c0d560e01b815290516001600160a01b03831691635909c0d5916004808301926020929190829003018186803b158015620001be57600080fd5b505afa158015620001d3573d6000803e3d6000fd5b505050506040513d6020811015620001ea57600080fd5b505160005560408051635a3d549360e01b815290516001600160a01b03831691635a3d5493916004808301926020929190829003018186803b1580156200023057600080fd5b505afa15801562000245573d6000803e3d6000fd5b505050506040513d60208110156200025c57600080fd5b505160015560408051630240bc6b60e21b8152905160009182916001600160a01b03851691630902f1ac916004808301926060929190829003018186803b158015620002a757600080fd5b505afa158015620002bc573d6000803e3d6000fd5b505050506040513d6060811015620002d357600080fd5b50805160208201516040909201516002805463ffffffff191663ffffffff909216919091179055925090506001600160701b038216158015906200031f57506001600160701b03811615155b62000371576040805162461bcd60e51b815260206004820181905260248201527f4578616d706c654f7261636c6553696d706c653a204e4f5f5245534552564553604482015290519081900360640190fd5b5050505050506200053d565b600080806200039685856001600160e01b036200045a16565b604080516001600160601b0319606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080826001600160a01b0316846001600160a01b03161415620004b05760405162461bcd60e51b8152600401808060200182810382526025815260200180620015a06025913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610620004d2578284620004d5565b83835b90925090506001600160a01b03821662000536576040805162461bcd60e51b815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b60805160601c60a05160601c60c05160601c6110236200057d600039806102a952806105da5250806101cd52806101f35250806103e452506110236000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063a2e6204511610076578063b4d1d7951161005b578063b4d1d7951461019a578063c5700a02146101a2578063d21220a7146101c3576100be565b8063a2e6204514610188578063a6bb453914610192576100be565b80635909c0d5116100a75780635909c0d51461013f5780635a3d5493146101475780635e6aaf2c1461014f576100be565b80630dfe1681146100c35780633ddac953146100f4575b600080fd5b6100cb6101cb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61012d6004803603604081101561010a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356101ef565b60408051918252519081900360200190f35b61012d6103aa565b61012d6103b0565b6101576103b6565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101906103da565b005b6101576105a1565b61012d6105c5565b6101aa6105cc565b6040805163ffffffff9092168252519081900360200190f35b6100cb6105d8565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156102a75760408051602081019091526003547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815261028c90610287908463ffffffff6105fc16565b6106bf565b71ffffffffffffffffffffffffffffffffffff1690506103a4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461034b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610f806022913960400191505060405180910390fd5b60408051602081019091526004547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815261038d90610287908463ffffffff6105fc16565b71ffffffffffffffffffffffffffffffffffff1690505b92915050565b60005481565b60015481565b6004547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b60008060006104087f00000000000000000000000000000000000000000000000000000000000000006106c6565b600254929550909350915063ffffffff90811682039062015180908216101561047c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610fc76027913960400191505060405180910390fd5b60405180602001604052808263ffffffff1660005487038161049a57fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091529051600380547fffffffff0000000000000000000000000000000000000000000000000000000016919092161790556040805160208101909152600154819063ffffffff84169086038161050e57fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091529051600480547fffffffff00000000000000000000000000000000000000000000000000000000169190921617905550600092909255600155600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff909216919091179055565b6003547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b6201518081565b60025463ffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b610604610cf6565b600082158061063f57505082517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168281029083828161063c57fe5b04145b6106aa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b5160701c90565b60008060006106d361094d565b90508373ffffffffffffffffffffffffffffffffffffffff16635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561071b57600080fd5b505afa15801561072f573d6000803e3d6000fd5b505050506040513d602081101561074557600080fd5b5051604080517f5a3d5493000000000000000000000000000000000000000000000000000000008152905191945073ffffffffffffffffffffffffffffffffffffffff861691635a3d549391600480820192602092909190829003018186803b1580156107b157600080fd5b505afa1580156107c5573d6000803e3d6000fd5b505050506040513d60208110156107db57600080fd5b5051604080517f0902f1ac00000000000000000000000000000000000000000000000000000000815290519193506000918291829173ffffffffffffffffffffffffffffffffffffffff891691630902f1ac916004808301926060929190829003018186803b15801561084d57600080fd5b505afa158015610861573d6000803e3d6000fd5b505050506040513d606081101561087757600080fd5b5080516020820151604090920151909450909250905063ffffffff808216908516146109435780840363ffffffff81166108c46dffffffffffffffffffffffffffff808616908716610957565b600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602870196508063ffffffff1661091c856dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16610957565b517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16029590950194505b5050509193909250565b63ffffffff421690565b61095f610d09565b600082116109b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610f5a6026913960400191505060405180910390fd5b826109d257506040805160208101909152600081526103a4565b71ffffffffffffffffffffffffffffffffffff8311610abd57600082607085901b816109fa57fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610a8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509150506103a4565b6000610ad9846e01000000000000000000000000000085610b66565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610a8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6000806000610b758686610c3b565b9150915060008480610b8357fe5b868809905082811115610b97576001820391505b918290039181610bb557848381610baa57fe5b049350505050610c34565b848210610c2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610c2e838387610c86565b93505050505b9392505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015610c7e576001820391505b509250929050565b60008181038216808381610c9657fe5b049250808581610ca257fe5b049450808160000381610cb157fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b6040518060200160405280600081525090565b60408051602081019091526000815290565b6000806000610d2a8585610e06565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610fa26025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610ec8578284610ecb565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610f5257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b925092905056fe4669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f4578616d706c654f7261636c6553696d706c653a20494e56414c49445f544f4b454e4d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534578616d706c654f7261636c6553696d706c653a20504552494f445f4e4f545f454c4150534544a26469706673582212201656e83c157454b214d212c290a58f58731eedff40975d2fd516842a12ab9cb364736f6c634300060600334d61725844455856324c6962726172793a204944454e544943414c5f414444524553534553",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100be5760003560e01c8063a2e6204511610076578063b4d1d7951161005b578063b4d1d7951461019a578063c5700a02146101a2578063d21220a7146101c3576100be565b8063a2e6204514610188578063a6bb453914610192576100be565b80635909c0d5116100a75780635909c0d51461013f5780635a3d5493146101475780635e6aaf2c1461014f576100be565b80630dfe1681146100c35780633ddac953146100f4575b600080fd5b6100cb6101cb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61012d6004803603604081101561010a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356101ef565b60408051918252519081900360200190f35b61012d6103aa565b61012d6103b0565b6101576103b6565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101906103da565b005b6101576105a1565b61012d6105c5565b6101aa6105cc565b6040805163ffffffff9092168252519081900360200190f35b6100cb6105d8565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156102a75760408051602081019091526003547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815261028c90610287908463ffffffff6105fc16565b6106bf565b71ffffffffffffffffffffffffffffffffffff1690506103a4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461034b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610f806022913960400191505060405180910390fd5b60408051602081019091526004547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815261038d90610287908463ffffffff6105fc16565b71ffffffffffffffffffffffffffffffffffff1690505b92915050565b60005481565b60015481565b6004547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b60008060006104087f00000000000000000000000000000000000000000000000000000000000000006106c6565b600254929550909350915063ffffffff90811682039062015180908216101561047c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610fc76027913960400191505060405180910390fd5b60405180602001604052808263ffffffff1660005487038161049a57fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091529051600380547fffffffff0000000000000000000000000000000000000000000000000000000016919092161790556040805160208101909152600154819063ffffffff84169086038161050e57fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091529051600480547fffffffff00000000000000000000000000000000000000000000000000000000169190921617905550600092909255600155600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff909216919091179055565b6003547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b6201518081565b60025463ffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b610604610cf6565b600082158061063f57505082517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168281029083828161063c57fe5b04145b6106aa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b5160701c90565b60008060006106d361094d565b90508373ffffffffffffffffffffffffffffffffffffffff16635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561071b57600080fd5b505afa15801561072f573d6000803e3d6000fd5b505050506040513d602081101561074557600080fd5b5051604080517f5a3d5493000000000000000000000000000000000000000000000000000000008152905191945073ffffffffffffffffffffffffffffffffffffffff861691635a3d549391600480820192602092909190829003018186803b1580156107b157600080fd5b505afa1580156107c5573d6000803e3d6000fd5b505050506040513d60208110156107db57600080fd5b5051604080517f0902f1ac00000000000000000000000000000000000000000000000000000000815290519193506000918291829173ffffffffffffffffffffffffffffffffffffffff891691630902f1ac916004808301926060929190829003018186803b15801561084d57600080fd5b505afa158015610861573d6000803e3d6000fd5b505050506040513d606081101561087757600080fd5b5080516020820151604090920151909450909250905063ffffffff808216908516146109435780840363ffffffff81166108c46dffffffffffffffffffffffffffff808616908716610957565b600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602870196508063ffffffff1661091c856dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16610957565b517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16029590950194505b5050509193909250565b63ffffffff421690565b61095f610d09565b600082116109b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610f5a6026913960400191505060405180910390fd5b826109d257506040805160208101909152600081526103a4565b71ffffffffffffffffffffffffffffffffffff8311610abd57600082607085901b816109fa57fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610a8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509150506103a4565b6000610ad9846e01000000000000000000000000000085610b66565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610a8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6000806000610b758686610c3b565b9150915060008480610b8357fe5b868809905082811115610b97576001820391505b918290039181610bb557848381610baa57fe5b049350505050610c34565b848210610c2357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610c2e838387610c86565b93505050505b9392505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015610c7e576001820391505b509250929050565b60008181038216808381610c9657fe5b049250808581610ca257fe5b049450808160000381610cb157fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b6040518060200160405280600081525090565b60408051602081019091526000815290565b6000806000610d2a8585610e06565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610fa26025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610ec8578284610ecb565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610f5257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b925092905056fe4669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f4578616d706c654f7261636c6553696d706c653a20494e56414c49445f544f4b454e4d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345534578616d706c654f7261636c6553696d706c653a20504552494f445f4e4f545f454c4150534544a26469706673582212201656e83c157454b214d212c290a58f58731eedff40975d2fd516842a12ab9cb364736f6c63430006060033",
      "srcmap": "555:2638:10:-:0;;;990:743;5:9:-1;2:2;;;27:1;24;17:12;2:2;990:743:10;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;990:743:10;;;;;;;;;;;;;;;;1068:20;;1106:49;;990:743;;;;;;1106:24;;;;;:49;;:::i;:::-;1068:88;;1173:5;-1:-1:-1;;;;;1166:12:10;;;-1:-1:-1;;;;;1166:12:10;;;;;;;1197:5;-1:-1:-1;;;;;1197:12:10;;:14;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1197:14:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1197:14:10;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1197:14:10;1188:23;;-1:-1:-1;;;;;;1188:23:10;;;1230:14;;;-1:-1:-1;;;1230:14:10;;;;-1:-1:-1;;;;;1230:12:10;;;;;:14;;;;;1197;;1230;;;;;;;:12;:14;;;2:2:-1;;;;27:1;24;17:12;2:2;1230:14:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1230:14:10;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1230:14:10;1221:23;;-1:-1:-1;;;;;;1221:23:10;;;1277:28;;;-1:-1:-1;;;1277:28:10;;;;-1:-1:-1;;;;;1277:26:10;;;;;:28;;;;;1230:14;;1277:28;;;;;;;:26;:28;;;2:2:-1;;;;27:1;24;17:12;2:2;1277:28:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1277:28:10;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1277:28:10;1254:20;:51;1391:28;;;-1:-1:-1;;;1391:28:10;;;;-1:-1:-1;;;;;1391:26:10;;;;;:28;;;;;1277;;1391;;;;;;;:26;:28;;;2:2:-1;;;;27:1;24;17:12;2:2;1391:28:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1391:28:10;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1391:28:10;1368:20;:51;1577:19;;;-1:-1:-1;;;1577:19:10;;;;1482:16;;;;-1:-1:-1;;;;;1577:17:10;;;;;:19;;;;;;;;;;;;;;:17;:19;;;2:2:-1;;;;27:1;24;17:12;2:2;1577:19:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1577:19:10;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1577:19:10;;;;;;;;;;;1555:18;1534:62;;-1:-1:-1;;1534:62:10;;;;;;;;;;;1577:19;-1:-1:-1;1577:19:10;-1:-1:-1;;;;;;1614:13:10;;;;;;:30;;-1:-1:-1;;;;;;1631:13:10;;;;1614:30;1606:75;;;;;-1:-1:-1;;;1606:75:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;990:743;;;;;;555:2638;;725:470:17;814:12;;;873:26;884:6;892;-1:-1:-1;;;;;873:10:17;:26;:::i;:::-;1033:32;;;-1:-1:-1;;;;;;1033:32:17;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1033:32:17;;;;;1023:43;;;;;;939:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;939:246:17;;;;;;;929:257;;;;;;;;;725:470;-1:-1:-1;;;;;725:470:17:o;291:345::-;366:14;382;426:6;-1:-1:-1;;;;;416:16:17;:6;-1:-1:-1;;;;;416:16:17;;;408:66;;;;-1:-1:-1;;;408:66:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:6;-1:-1:-1;;;;;503:15:17;:6;-1:-1:-1;;;;;503:15:17;;:53;;541:6;549;503:53;;;522:6;530;503:53;484:72;;-1:-1:-1;484:72:17;-1:-1:-1;;;;;;574:20:17;;566:63;;;;;-1:-1:-1;;;566:63:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:345;;;;;:::o;555:2638:10:-;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "555:2638:10:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;555:2638:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;699:31:10;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2834:357;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2834:357:10;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;774:35;;;:::i;815:::-;;;:::i;942:41::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1739:988;;;:::i;:::-;;895:41;;;:::i;619:38::-;;;:::i;856:33::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;736:31;;;:::i;699:::-;;;:::o;2834:357::-;2904:14;2943:6;2934:15;;:5;:15;;;2930:255;;;2977:17;;;;;;;;;:13;:17;;;;;:39;;:27;;2995:8;2977:27;:17;:27;:::i;:::-;:37;:39::i;:::-;2965:51;;;;2930:255;;;3064:6;3055:15;;:5;:15;;;3047:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3135:17;;;;;;;;;:13;:17;;;;;:39;;:27;;3153:8;3135:27;:17;:27;:::i;:39::-;3123:51;;;;2930:255;2834:357;;;;:::o;774:35::-;;;;:::o;815:::-;;;;:::o;942:41::-;;;;;;:::o;1739:988::-;1777:21;1800;1823;1860:61;1915:4;1860:46;:61::i;:::-;1969:18;;1776:145;;-1:-1:-1;1776:145:10;;-1:-1:-1;1776:145:10;-1:-1:-1;1969:18:10;;;;1952:35;;;649:8;2110:21;;;;;2102:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2378:86;;;;;;;;2451:11;2407:55;;2427:20;;2408:16;:39;2407:55;;;;;;2378:86;;;;;;;2362:102;;:13;:102;;;;;;;;;;;2490:86;;;;;;;;;-1:-1:-1;2539:20:10;2490:86;;2519:55;;;;2520:39;;2519:55;;;;;;2490:86;;;;;;;2474:102;;:13;:102;;;;;;;;;;;-1:-1:-1;;2587:39:10;;;;-1:-1:-1;2636:39:10;2685:18;:35;;;;;;;;;;;;;;1739:988::o;895:41::-;;;;;;:::o;619:38::-;649:8;619:38;:::o;856:33::-;;;;;;:::o;736:31::-;;;:::o;1694:237:2:-;1764:16;;:::i;:::-;1792:9;1823:6;;;:42;;-1:-1:-1;;1858:7:2;;1833:32;;1838:11;;;;1853:1;1838:11;1853:1;1833:21;;;;;:32;1823:42;1815:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:12;;;;;;;;;;;;;1694:237;-1:-1:-1;;;1694:237:2:o;1472:128::-;1571:7;531:3;1571:21;;1472:128::o;666:1040:19:-;750:21;773;796;846:23;:21;:23::i;:::-;829:40;;913:4;898:41;;;:43;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;898:43:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;898:43:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;898:43:19;970;;;;;;;;898;;-1:-1:-1;970:41:19;;;;;;:43;;;;;898;;970;;;;;;;;:41;:43;;;2:2:-1;;;;27:1;24;17:12;2:2;970:43:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;970:43:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;970:43:19;1190:34;;;;;;;;970:43;;-1:-1:-1;1125:16:19;;;;;;1190:32;;;;;;:34;;;;;;;;;;;;;;:32;:34;;;2:2:-1;;;;27:1;24;17:12;2:2;1190:34:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1190:34:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1190:34:19;;;;;;;;;;;;;-1:-1:-1;1190:34:19;;-1:-1:-1;1190:34:19;-1:-1:-1;1238:36:19;;;;;;;;1234:466;;1358:35;;;1501:62;;;1506:39;;;;;;;;:19;:39::i;:::-;:42;;;1501:48;;:62;1481:82;;;;1678:11;1627:62;;1632:39;1652:8;1632:39;;1662:8;1632:39;;:19;:39::i;:::-;:42;1627:48;;:62;1607:82;;;;;-1:-1:-1;1234:466:19;666:1040;;;;;;;;:::o;442:121::-;530:25;:15;:25;;442:121::o;4526:706:2:-;4607:16;;:::i;:::-;4657:1;4643:11;:15;4635:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4715:14;4711:50;;-1:-1:-1;4738:23:2;;;;;;;;;-1:-1:-1;4738:23:2;;4731:30;;4711:50;4776:24;;;4772:454;;4816:14;4861:11;531:3;4834:23;;;4861:11;4833:39;;;;;;-1:-1:-1;4894:21:2;;;;4886:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4971:26;;;;;;;;4989:6;4971:26;;;;;4964:33;;;;;4772:454;5028:14;5045:45;5061:9;571:31;5078:11;5045:15;:45::i;:::-;5028:62;-1:-1:-1;5112:21:2;;;;5104:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;897:373:3;999:7;1019:9;1030;1043:13;1051:1;1054;1043:7;:13::i;:::-;1018:38;;;;1067:10;1093:1;1080:15;;;;;1090:1;1087;1080:15;1067:28;;1114:1;1109:2;:6;1105:18;;;1122:1;1117:6;;;;1105:18;1133:7;;;;;1155:6;1151:24;;1174:1;1170;:5;;;;;;1163:12;;;;;;;1151:24;1198:1;1194;:5;1186:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:16;1255:1;1258;1261;1247:7;:16::i;:::-;1240:23;;;;;897:373;;;;;;:::o;216:206::-;278:9;;;344:2;333:1;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o;428:463::-;530:7;568:2;;;564:6;;;569:1;564:6;580:9;;;;;;;604:4;599:9;;;;;;;;;638:4;630;629:5;;628:14;;;;;685:1;:9;;;713:5;;;709:9;;704:14;737:5;;;733:9;;728:14;761:5;;;757:9;;752:14;785:5;;;781:9;;776:14;809:5;;;805:9;;800:14;833:5;;;829:9;;824:14;857:5;;;853:9;;848:14;;;628;;645:1;628:18;623:24;;;;618:29;;;;879:5;;428:463;-1:-1:-1;;428:463:3:o;555:2638:10:-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;555:2638:10;;;:::o;725:470:17:-;814:12;839:14;855;873:26;884:6;892;873:10;:26::i;:::-;1033:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1033:32:17;;;;;1023:43;;;;;;939:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;939:246:17;;;;;;;929:257;;;;;;;;;725:470;-1:-1:-1;;;;;725:470:17:o;291:345::-;366:14;382;426:6;416:16;;:6;:16;;;;408:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:6;503:15;;:6;:15;;;:53;;541:6;549;503:53;;;522:6;530;503:53;484:72;;-1:-1:-1;484:72:17;-1:-1:-1;574:20:17;;;566:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:345;;;;;:::o"
    },
    "contracts/examples/ExampleSlidingWindowOracle.sol:ExampleSlidingWindowOracle": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "factory_",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "windowSize_",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "granularity_",
              "type": "uint8"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            }
          ],
          "name": "consult",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "granularity",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            }
          ],
          "name": "observationIndexOf",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "index",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "pairObservations",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "price0Cumulative",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "price1Cumulative",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "periodSize",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "update",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "windowSize",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "61010060405234801561001157600080fd5b506040516113943803806113948339818101604052606081101561003457600080fd5b5080516020820151604090920151909190600160ff82161161009d576040805162461bcd60e51b815260206004820181905260248201527f536c6964696e6757696e646f774f7261636c653a204752414e554c4152495459604482015290519081900360640190fd5b8160ff82168082816100ab57fe5b0460e081905202146100ee5760405162461bcd60e51b81526004018080602001828103825260308152602001806113646030913960400191505060405180910390fd5b606083901b6001600160601b03191660805260a082905260f881901b7fff000000000000000000000000000000000000000000000000000000000000001660c05260e0516001600160a01b039093169260ff909116906111c561019f600039806102f7528061059452806105e752806106475250806101f452806104d752806106135280610766525080610218528061027e528061031b525080610242528061045c528061048552506111c56000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c45a01551161005b578063c45a01551461015f578063c640752d14610190578063dbaad32f146101cd578063e4463eb2146101ea57610088565b8063556f0dc71461008d5780638a14117a146100ab5780638c86f1e4146100c5578063bfcc8e4214610108575b600080fd5b6100956101f2565b6040805160ff9092168252519081900360200190f35b6100b3610216565b60408051918252519081900360200190f35b6100b3600480360360608110156100db57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040909101351661023a565b6101416004803603604081101561011e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561041b565b60408051938452602084019290925282820152519081900360600190f35b61016761045a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101cb600480360360408110156101a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661047e565b005b610095600480360360208110156101e357600080fd5b50356105e2565b6100b3610645565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806102687f00000000000000000000000000000000000000000000000000000000000000008685610669565b9050600061027582610754565b805490915042037f00000000000000000000000000000000000000000000000000000000000000008111156102f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806110e66033913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006002027f000000000000000000000000000000000000000000000000000000000000000003811015610393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611119602c913960400191505060405180910390fd5b60008061039f856107fc565b509150915060006103b08a89610a83565b5090508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610404576103f7856001015484868c610bd6565b9650505050505050610414565b6103f7856002015483868c610bd6565b9392505050565b6000602052816000526040600020818154811061043457fe5b600091825260209091206003909102018054600182015460029092015490935090915083565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006104ab7f00000000000000000000000000000000000000000000000000000000000000008484610669565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020549091505b7f000000000000000000000000000000000000000000000000000000000000000060ff168110156105365773ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054600190810182559152016104d5565b506000610542426105e2565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208054929350909160ff841690811061057b57fe5b60009182526020909120600390910201805490915042037f00000000000000000000000000000000000000000000000000000000000000008111156105da576000806105c6866107fc565b504286556001860191909155600285015550505b505050505050565b6000807f0000000000000000000000000000000000000000000000000000000000000000838161060e57fe5b0490507f000000000000000000000000000000000000000000000000000000000000000060ff16818161063d57fe5b069392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060006106788585610a83565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080610760426105e2565b905060007f000000000000000000000000000000000000000000000000000000000000000060ff168260010160ff168161079657fe5b0690506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208160ff16815481106107e557fe5b906000526020600020906003020192505050919050565b6000806000610809610c49565b90508373ffffffffffffffffffffffffffffffffffffffff16635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561085157600080fd5b505afa158015610865573d6000803e3d6000fd5b505050506040513d602081101561087b57600080fd5b5051604080517f5a3d5493000000000000000000000000000000000000000000000000000000008152905191945073ffffffffffffffffffffffffffffffffffffffff861691635a3d549391600480820192602092909190829003018186803b1580156108e757600080fd5b505afa1580156108fb573d6000803e3d6000fd5b505050506040513d602081101561091157600080fd5b5051604080517f0902f1ac00000000000000000000000000000000000000000000000000000000815290519193506000918291829173ffffffffffffffffffffffffffffffffffffffff891691630902f1ac916004808301926060929190829003018186803b15801561098357600080fd5b505afa158015610997573d6000803e3d6000fd5b505050506040513d60608110156109ad57600080fd5b5080516020820151604090920151909450909250905063ffffffff80821690851614610a795780840363ffffffff81166109fa6dffffffffffffffffffffffffffff808616908716610c53565b600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602870196508063ffffffff16610a52856dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16610c53565b517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16029590950194505b5050509193909250565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061116b6025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b45578284610b48565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bcf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000610be06110c0565b60405180602001604052808588880381610bf657fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690529050610c2b610c268285610e68565b610f2b565b71ffffffffffffffffffffffffffffffffffff169695505050505050565b63ffffffff421690565b610c5b6110c0565b60008211610cb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806111456026913960400191505060405180910390fd5b82610cce5750604080516020810190915260008152610e62565b71ffffffffffffffffffffffffffffffffffff8311610db957600082607085901b81610cf657fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610d8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815250915050610e62565b6000610dd5846e01000000000000000000000000000085610f32565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610d8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b92915050565b610e706110d2565b6000821580610eab57505082517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682810290838281610ea857fe5b04145b610f1657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b5160701c90565b6000806000610f418686611005565b9150915060008480610f4f57fe5b868809905082811115610f63576001820391505b918290039181610f8157848381610f7657fe5b049350505050610414565b848210610fef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610ffa838387611050565b979650505050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015611048576001820391505b509250929050565b6000818103821680838161106057fe5b04925080858161106c57fe5b04945080816000038161107b57fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b604051806020016040528060008152509056fe536c6964696e6757696e646f774f7261636c653a204d495353494e475f484953544f524943414c5f4f42534552564154494f4e536c6964696e6757696e646f774f7261636c653a20554e45585045435445445f54494d455f454c41505345444669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f4d61725844455856324c6962726172793a204944454e544943414c5f414444524553534553a2646970667358221220c366fb28d728122801530290552b9ffcc364928816c77a18b229b929f6350b5864736f6c63430006060033536c6964696e6757696e646f774f7261636c653a2057494e444f575f4e4f545f4556454e4c595f444956495349424c45",
          "opcodes": "PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1394 CODESIZE SUB DUP1 PUSH2 0x1394 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xFF DUP3 AND GT PUSH2 0x9D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536C6964696E6757696E646F774F7261636C653A204752414E554C4152495459 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0xFF DUP3 AND DUP1 DUP3 DUP2 PUSH2 0xAB JUMPI INVALID JUMPDEST DIV PUSH1 0xE0 DUP2 SWAP1 MSTORE MUL EQ PUSH2 0xEE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1364 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH1 0xA0 DUP3 SWAP1 MSTORE PUSH1 0xF8 DUP2 SWAP1 SHL PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND PUSH1 0xC0 MSTORE PUSH1 0xE0 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 PUSH2 0x11C5 PUSH2 0x19F PUSH1 0x0 CODECOPY DUP1 PUSH2 0x2F7 MSTORE DUP1 PUSH2 0x594 MSTORE DUP1 PUSH2 0x5E7 MSTORE DUP1 PUSH2 0x647 MSTORE POP DUP1 PUSH2 0x1F4 MSTORE DUP1 PUSH2 0x4D7 MSTORE DUP1 PUSH2 0x613 MSTORE DUP1 PUSH2 0x766 MSTORE POP DUP1 PUSH2 0x218 MSTORE DUP1 PUSH2 0x27E MSTORE DUP1 PUSH2 0x31B MSTORE POP DUP1 PUSH2 0x242 MSTORE DUP1 PUSH2 0x45C MSTORE DUP1 PUSH2 0x485 MSTORE POP PUSH2 0x11C5 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC45A0155 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0xC640752D EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xDBAAD32F EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0xE4463EB2 EQ PUSH2 0x1EA JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x556F0DC7 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x8A14117A EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x8C86F1E4 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0xBFCC8E42 EQ PUSH2 0x108 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x1F2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x23A JUMP JUMPDEST PUSH2 0x141 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x11E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x41B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x167 PUSH2 0x45A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x47E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x95 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5E2 JUMP JUMPDEST PUSH2 0xB3 PUSH2 0x645 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x268 PUSH32 0x0 DUP7 DUP6 PUSH2 0x669 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x275 DUP3 PUSH2 0x754 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP TIMESTAMP SUB PUSH32 0x0 DUP2 GT ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10E6 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x2 MUL PUSH32 0x0 SUB DUP2 LT ISZERO PUSH2 0x393 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1119 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x39F DUP6 PUSH2 0x7FC JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x3B0 DUP11 DUP10 PUSH2 0xA83 JUMP JUMPDEST POP SWAP1 POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x404 JUMPI PUSH2 0x3F7 DUP6 PUSH1 0x1 ADD SLOAD DUP5 DUP7 DUP13 PUSH2 0xBD6 JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x414 JUMP JUMPDEST PUSH2 0x3F7 DUP6 PUSH1 0x2 ADD SLOAD DUP4 DUP7 DUP13 PUSH2 0xBD6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x434 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP4 POP SWAP1 SWAP2 POP DUP4 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AB PUSH32 0x0 DUP5 DUP5 PUSH2 0x669 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP JUMPDEST PUSH32 0x0 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x536 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 ADD DUP3 SSTORE SWAP2 MSTORE ADD PUSH2 0x4D5 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x542 TIMESTAMP PUSH2 0x5E2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH1 0xFF DUP5 AND SWAP1 DUP2 LT PUSH2 0x57B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD SWAP1 SWAP2 POP TIMESTAMP SUB PUSH32 0x0 DUP2 GT ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 PUSH2 0x5C6 DUP7 PUSH2 0x7FC JUMP JUMPDEST POP TIMESTAMP DUP7 SSTORE PUSH1 0x1 DUP7 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP6 ADD SSTORE POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 DUP4 DUP2 PUSH2 0x60E JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH32 0x0 PUSH1 0xFF AND DUP2 DUP2 PUSH2 0x63D JUMPI INVALID JUMPDEST MOD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x678 DUP6 DUP6 PUSH2 0xA83 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x236595447338C75B512D89A54E3B5160E3A38C8FFE13F0E88C634CA037665806 PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x760 TIMESTAMP PUSH2 0x5E2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0xFF AND DUP3 PUSH1 0x1 ADD PUSH1 0xFF AND DUP2 PUSH2 0x796 JUMPI INVALID JUMPDEST MOD SWAP1 POP PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x7E5 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x809 PUSH2 0xC49 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5909C0D5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x851 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x865 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x87B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x5A3D549300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP2 PUSH4 0x5A3D5493 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x911 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x902F1AC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0x902F1AC SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x983 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x997 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP1 DUP6 AND EQ PUSH2 0xA79 JUMPI DUP1 DUP5 SUB PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x9FA PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND SWAP1 DUP8 AND PUSH2 0xC53 JUMP JUMPDEST PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL DUP8 ADD SWAP7 POP DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0xA52 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC53 JUMP JUMPDEST MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL SWAP6 SWAP1 SWAP6 ADD SWAP5 POP JUMPDEST POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xB0B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x116B PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xB45 JUMPI DUP3 DUP5 PUSH2 0xB48 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xBCF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBE0 PUSH2 0x10C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP9 DUP9 SUB DUP2 PUSH2 0xBF6 JUMPI INVALID JUMPDEST DIV PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 MSTORE SWAP1 POP PUSH2 0xC2B PUSH2 0xC26 DUP3 DUP6 PUSH2 0xE68 JUMP JUMPDEST PUSH2 0xF2B JUMP JUMPDEST PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0xFFFFFFFF TIMESTAMP AND SWAP1 JUMP JUMPDEST PUSH2 0xC5B PUSH2 0x10C0 JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0xCB4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1145 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xCCE JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0xE62 JUMP JUMPDEST PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0xDB9 JUMPI PUSH1 0x0 DUP3 PUSH1 0x70 DUP6 SWAP1 SHL DUP2 PUSH2 0xCF6 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD84 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP2 POP POP PUSH2 0xE62 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD5 DUP5 PUSH15 0x10000000000000000000000000000 DUP6 PUSH2 0xF32 JUMP JUMPDEST SWAP1 POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD84 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE70 PUSH2 0x10D2 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xEAB JUMPI POP POP DUP3 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP2 MUL SWAP1 DUP4 DUP3 DUP2 PUSH2 0xEA8 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xF16 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6D756C3A206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST MLOAD PUSH1 0x70 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xF41 DUP7 DUP7 PUSH2 0x1005 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xF4F JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xF63 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0xF81 JUMPI DUP5 DUP4 DUP2 PUSH2 0xF76 JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0x414 JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0xFEF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xFFA DUP4 DUP4 DUP8 PUSH2 0x1050 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0x1048 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0x1060 JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0x106C JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0x107B JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP INVALID MSTORE8 PUSH13 0x6964696E6757696E646F774F72 PUSH2 0x636C PUSH6 0x3A204D495353 0x49 0x4E SELFBALANCE 0x5F 0x48 0x49 MSTORE8 SLOAD 0x4F MSTORE 0x49 NUMBER COINBASE 0x4C 0x5F 0x4F TIMESTAMP MSTORE8 GASLIMIT MSTORE JUMP COINBASE SLOAD 0x49 0x4F 0x4E MSTORE8 PUSH13 0x6964696E6757696E646F774F72 PUSH2 0x636C PUSH6 0x3A20554E4558 POP GASLIMIT NUMBER SLOAD GASLIMIT DIFFICULTY 0x5F SLOAD 0x49 0x4D GASLIMIT 0x5F GASLIMIT 0x4C COINBASE POP MSTORE8 GASLIMIT DIFFICULTY CHAINID PUSH10 0x786564506F696E743A3A PUSH7 0x72616374696F6E GASPRICE KECCAK256 PUSH5 0x6976697369 PUSH16 0x6E206279207A65726F4D617258444558 JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494445 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC3 PUSH7 0xFB28D728122801 MSTORE8 MUL SWAP1 SSTORE 0x2B SWAP16 0xFC 0xC3 PUSH5 0x928816C77A XOR 0xB2 0x29 0xB9 0x29 0xF6 CALLDATALOAD SIGNEXTEND PC PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER MSTORE8 PUSH13 0x6964696E6757696E646F774F72 PUSH2 0x636C PUSH6 0x3A2057494E44 0x4F JUMPI 0x5F 0x4E 0x4F SLOAD 0x5F GASLIMIT JUMP GASLIMIT 0x4E 0x4C MSIZE 0x5F DIFFICULTY 0x49 JUMP 0x49 MSTORE8 0x49 TIMESTAMP 0x4C GASLIMIT ",
          "sourceMap": "734:5705:11:-:0;;;2005:427;5:9:-1;2:2;;;27:1;24;17:12;2:2;2005:427:11;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2005:427:11;;;;;;;;;;;;;;2113:1;2098:16;;;;2090:61;;;;;-1:-1:-1;;;2090:61:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2242:11;2182:56;;;;2242:11;2182:56;2196:26;;;;;2183:39;;;;2182:56;:71;2161:166;;;;-1:-1:-1;;;2161:166:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2337:18;;;;-1:-1:-1;;;;;;2337:18:11;;;2365:24;;;;2399:26;;;;;;;;734:5705;;-1:-1:-1;;;;;734:5705:11;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {
            "5666": [
              {
                "length": 32,
                "start": 578
              },
              {
                "length": 32,
                "start": 1116
              },
              {
                "length": 32,
                "start": 1157
              }
            ],
            "5668": [
              {
                "length": 32,
                "start": 536
              },
              {
                "length": 32,
                "start": 638
              },
              {
                "length": 32,
                "start": 795
              }
            ],
            "5670": [
              {
                "length": 32,
                "start": 500
              },
              {
                "length": 32,
                "start": 1239
              },
              {
                "length": 32,
                "start": 1555
              },
              {
                "length": 32,
                "start": 1894
              }
            ],
            "5672": [
              {
                "length": 32,
                "start": 759
              },
              {
                "length": 32,
                "start": 1428
              },
              {
                "length": 32,
                "start": 1511
              },
              {
                "length": 32,
                "start": 1607
              }
            ]
          },
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063c45a01551161005b578063c45a01551461015f578063c640752d14610190578063dbaad32f146101cd578063e4463eb2146101ea57610088565b8063556f0dc71461008d5780638a14117a146100ab5780638c86f1e4146100c5578063bfcc8e4214610108575b600080fd5b6100956101f2565b6040805160ff9092168252519081900360200190f35b6100b3610216565b60408051918252519081900360200190f35b6100b3600480360360608110156100db57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040909101351661023a565b6101416004803603604081101561011e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561041b565b60408051938452602084019290925282820152519081900360600190f35b61016761045a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101cb600480360360408110156101a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661047e565b005b610095600480360360208110156101e357600080fd5b50356105e2565b6100b3610645565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806102687f00000000000000000000000000000000000000000000000000000000000000008685610669565b9050600061027582610754565b805490915042037f00000000000000000000000000000000000000000000000000000000000000008111156102f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806110e66033913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006002027f000000000000000000000000000000000000000000000000000000000000000003811015610393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611119602c913960400191505060405180910390fd5b60008061039f856107fc565b509150915060006103b08a89610a83565b5090508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610404576103f7856001015484868c610bd6565b9650505050505050610414565b6103f7856002015483868c610bd6565b9392505050565b6000602052816000526040600020818154811061043457fe5b600091825260209091206003909102018054600182015460029092015490935090915083565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006104ab7f00000000000000000000000000000000000000000000000000000000000000008484610669565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020549091505b7f000000000000000000000000000000000000000000000000000000000000000060ff168110156105365773ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054600190810182559152016104d5565b506000610542426105e2565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208054929350909160ff841690811061057b57fe5b60009182526020909120600390910201805490915042037f00000000000000000000000000000000000000000000000000000000000000008111156105da576000806105c6866107fc565b504286556001860191909155600285015550505b505050505050565b6000807f0000000000000000000000000000000000000000000000000000000000000000838161060e57fe5b0490507f000000000000000000000000000000000000000000000000000000000000000060ff16818161063d57fe5b069392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060006106788585610a83565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080610760426105e2565b905060007f000000000000000000000000000000000000000000000000000000000000000060ff168260010160ff168161079657fe5b0690506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208160ff16815481106107e557fe5b906000526020600020906003020192505050919050565b6000806000610809610c49565b90508373ffffffffffffffffffffffffffffffffffffffff16635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561085157600080fd5b505afa158015610865573d6000803e3d6000fd5b505050506040513d602081101561087b57600080fd5b5051604080517f5a3d5493000000000000000000000000000000000000000000000000000000008152905191945073ffffffffffffffffffffffffffffffffffffffff861691635a3d549391600480820192602092909190829003018186803b1580156108e757600080fd5b505afa1580156108fb573d6000803e3d6000fd5b505050506040513d602081101561091157600080fd5b5051604080517f0902f1ac00000000000000000000000000000000000000000000000000000000815290519193506000918291829173ffffffffffffffffffffffffffffffffffffffff891691630902f1ac916004808301926060929190829003018186803b15801561098357600080fd5b505afa158015610997573d6000803e3d6000fd5b505050506040513d60608110156109ad57600080fd5b5080516020820151604090920151909450909250905063ffffffff80821690851614610a795780840363ffffffff81166109fa6dffffffffffffffffffffffffffff808616908716610c53565b600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602870196508063ffffffff16610a52856dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16610c53565b517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16029590950194505b5050509193909250565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061116b6025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b45578284610b48565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bcf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000610be06110c0565b60405180602001604052808588880381610bf657fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690529050610c2b610c268285610e68565b610f2b565b71ffffffffffffffffffffffffffffffffffff169695505050505050565b63ffffffff421690565b610c5b6110c0565b60008211610cb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806111456026913960400191505060405180910390fd5b82610cce5750604080516020810190915260008152610e62565b71ffffffffffffffffffffffffffffffffffff8311610db957600082607085901b81610cf657fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610d8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815250915050610e62565b6000610dd5846e01000000000000000000000000000085610f32565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610d8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b92915050565b610e706110d2565b6000821580610eab57505082517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682810290838281610ea857fe5b04145b610f1657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b5160701c90565b6000806000610f418686611005565b9150915060008480610f4f57fe5b868809905082811115610f63576001820391505b918290039181610f8157848381610f7657fe5b049350505050610414565b848210610fef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610ffa838387611050565b979650505050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015611048576001820391505b509250929050565b6000818103821680838161106057fe5b04925080858161106c57fe5b04945080816000038161107b57fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b604051806020016040528060008152509056fe536c6964696e6757696e646f774f7261636c653a204d495353494e475f484953544f524943414c5f4f42534552564154494f4e536c6964696e6757696e646f774f7261636c653a20554e45585045435445445f54494d455f454c41505345444669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f4d61725844455856324c6962726172793a204944454e544943414c5f414444524553534553a2646970667358221220c366fb28d728122801530290552b9ffcc364928816c77a18b229b929f6350b5864736f6c63430006060033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC45A0155 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0xC640752D EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xDBAAD32F EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0xE4463EB2 EQ PUSH2 0x1EA JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x556F0DC7 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x8A14117A EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x8C86F1E4 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0xBFCC8E42 EQ PUSH2 0x108 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x1F2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH2 0x216 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x23A JUMP JUMPDEST PUSH2 0x141 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x11E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x41B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x167 PUSH2 0x45A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1CB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x47E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x95 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x5E2 JUMP JUMPDEST PUSH2 0xB3 PUSH2 0x645 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x268 PUSH32 0x0 DUP7 DUP6 PUSH2 0x669 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x275 DUP3 PUSH2 0x754 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP TIMESTAMP SUB PUSH32 0x0 DUP2 GT ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x10E6 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x2 MUL PUSH32 0x0 SUB DUP2 LT ISZERO PUSH2 0x393 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1119 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x39F DUP6 PUSH2 0x7FC JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x3B0 DUP11 DUP10 PUSH2 0xA83 JUMP JUMPDEST POP SWAP1 POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x404 JUMPI PUSH2 0x3F7 DUP6 PUSH1 0x1 ADD SLOAD DUP5 DUP7 DUP13 PUSH2 0xBD6 JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x414 JUMP JUMPDEST PUSH2 0x3F7 DUP6 PUSH1 0x2 ADD SLOAD DUP4 DUP7 DUP13 PUSH2 0xBD6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x434 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP4 POP SWAP1 SWAP2 POP DUP4 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4AB PUSH32 0x0 DUP5 DUP5 PUSH2 0x669 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP JUMPDEST PUSH32 0x0 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x536 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 ADD DUP3 SSTORE SWAP2 MSTORE ADD PUSH2 0x4D5 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x542 TIMESTAMP PUSH2 0x5E2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH1 0xFF DUP5 AND SWAP1 DUP2 LT PUSH2 0x57B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD SWAP1 SWAP2 POP TIMESTAMP SUB PUSH32 0x0 DUP2 GT ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 PUSH2 0x5C6 DUP7 PUSH2 0x7FC JUMP JUMPDEST POP TIMESTAMP DUP7 SSTORE PUSH1 0x1 DUP7 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP6 ADD SSTORE POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 DUP4 DUP2 PUSH2 0x60E JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH32 0x0 PUSH1 0xFF AND DUP2 DUP2 PUSH2 0x63D JUMPI INVALID JUMPDEST MOD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x678 DUP6 DUP6 PUSH2 0xA83 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x236595447338C75B512D89A54E3B5160E3A38C8FFE13F0E88C634CA037665806 PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x760 TIMESTAMP PUSH2 0x5E2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0xFF AND DUP3 PUSH1 0x1 ADD PUSH1 0xFF AND DUP2 PUSH2 0x796 JUMPI INVALID JUMPDEST MOD SWAP1 POP PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x7E5 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x809 PUSH2 0xC49 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x5909C0D5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x851 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x865 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x87B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x5A3D549300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP2 PUSH4 0x5A3D5493 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x911 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x902F1AC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0x902F1AC SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x983 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x997 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x9AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP1 DUP6 AND EQ PUSH2 0xA79 JUMPI DUP1 DUP5 SUB PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x9FA PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND SWAP1 DUP8 AND PUSH2 0xC53 JUMP JUMPDEST PUSH1 0x0 ADD MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL DUP8 ADD SWAP7 POP DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0xA52 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC53 JUMP JUMPDEST MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL SWAP6 SWAP1 SWAP6 ADD SWAP5 POP JUMPDEST POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xB0B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x116B PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xB45 JUMPI DUP3 DUP5 PUSH2 0xB48 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xBCF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBE0 PUSH2 0x10C0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP9 DUP9 SUB DUP2 PUSH2 0xBF6 JUMPI INVALID JUMPDEST DIV PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 MSTORE SWAP1 POP PUSH2 0xC2B PUSH2 0xC26 DUP3 DUP6 PUSH2 0xE68 JUMP JUMPDEST PUSH2 0xF2B JUMP JUMPDEST PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0xFFFFFFFF TIMESTAMP AND SWAP1 JUMP JUMPDEST PUSH2 0xC5B PUSH2 0x10C0 JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0xCB4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1145 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xCCE JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0xE62 JUMP JUMPDEST PUSH18 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT PUSH2 0xDB9 JUMPI PUSH1 0x0 DUP3 PUSH1 0x70 DUP6 SWAP1 SHL DUP2 PUSH2 0xCF6 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD84 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP2 POP POP PUSH2 0xE62 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDD5 DUP5 PUSH15 0x10000000000000000000000000000 DUP6 PUSH2 0xF32 JUMP JUMPDEST SWAP1 POP PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD84 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE70 PUSH2 0x10D2 JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xEAB JUMPI POP POP DUP3 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP2 MUL SWAP1 DUP4 DUP3 DUP2 PUSH2 0xEA8 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xF16 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6D756C3A206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST MLOAD PUSH1 0x70 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xF41 DUP7 DUP7 PUSH2 0x1005 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xF4F JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xF63 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0xF81 JUMPI DUP5 DUP4 DUP2 PUSH2 0xF76 JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0x414 JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0xFEF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xFFA DUP4 DUP4 DUP8 PUSH2 0x1050 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0x1048 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0x1060 JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0x106C JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0x107B JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP INVALID MSTORE8 PUSH13 0x6964696E6757696E646F774F72 PUSH2 0x636C PUSH6 0x3A204D495353 0x49 0x4E SELFBALANCE 0x5F 0x48 0x49 MSTORE8 SLOAD 0x4F MSTORE 0x49 NUMBER COINBASE 0x4C 0x5F 0x4F TIMESTAMP MSTORE8 GASLIMIT MSTORE JUMP COINBASE SLOAD 0x49 0x4F 0x4E MSTORE8 PUSH13 0x6964696E6757696E646F774F72 PUSH2 0x636C PUSH6 0x3A20554E4558 POP GASLIMIT NUMBER SLOAD GASLIMIT DIFFICULTY 0x5F SLOAD 0x49 0x4D GASLIMIT 0x5F GASLIMIT 0x4C COINBASE POP MSTORE8 GASLIMIT DIFFICULTY CHAINID PUSH10 0x786564506F696E743A3A PUSH7 0x72616374696F6E GASPRICE KECCAK256 PUSH5 0x6976697369 PUSH16 0x6E206279207A65726F4D617258444558 JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494445 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC3 PUSH7 0xFB28D728122801 MSTORE8 MUL SWAP1 SSTORE 0x2B SWAP16 0xFC 0xC3 PUSH5 0x928816C77A XOR 0xB2 0x29 0xB9 0x29 0xF6 CALLDATALOAD SIGNEXTEND PC PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "734:5705:11:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;734:5705:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;1673:34:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1088:32;;;:::i;:::-;;;;;;;;;;;;;;;;5375:1062;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5375:1062:11;;;;;;;;;;;;;;;;;;:::i;1941:57::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1941:57:11;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;952:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3403:1050;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3403:1050:11;;;;;;;;;;;:::i;:::-;;2519:185;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2519:185:11;;:::i;1824:32::-;;;:::i;1673:34::-;;;:::o;1088:32::-;;;:::o;5375:1062::-;5465:14;5491:12;5506:52;5531:7;5540;5549:8;5506:24;:52::i;:::-;5491:67;;5568:36;5607:33;5635:4;5607:27;:33::i;:::-;5688:26;;5568:72;;-1:-1:-1;5670:15:11;:44;5747:10;5732:25;;;5724:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5891:10;5904:1;5891:14;5878:10;:27;5863:11;:42;;5855:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5966:21;5989;6015:52;6062:4;6015:46;:52::i;:::-;5965:102;;;;;6078:14;6097:46;6125:7;6134:8;6097:27;:46::i;:::-;6077:66;;;6168:7;6158:17;;:6;:17;;;6154:277;;;6198:92;6215:16;:33;;;6250:16;6268:11;6281:8;6198:16;:92::i;:::-;6191:99;;;;;;;;;;6154:277;6328:92;6345:16;:33;;;6380:16;6398:11;6411:8;6328:16;:92::i;5375:1062::-;;;;;;:::o;1941:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1941:57:11;;-1:-1:-1;1941:57:11;:::o;952:32::-;;;:::o;3403:1050::-;3470:12;3485:49;3510:7;3519:6;3527;3485:24;:49::i;:::-;3631:22;;;3622:6;3631:22;;;;;;;;;;:29;3470:64;;-1:-1:-1;3617:121:11;3666:11;3662:15;;:1;:15;3617:121;;;3698:22;;;:16;:22;;;;;;;;;;27:10:-1;;3698:29:11;23:18:-1;;;45:23;;3698:29:11;;3679:3;3617:121;;;;3802:22;3827:35;3846:15;3827:18;:35::i;:::-;3906:22;;;3872:31;3906:22;;;;;;;;;;:40;;3802:60;;-1:-1:-1;3872:31:11;;3906:40;;;;;;;;;;;;;;;;;;;;;;;4084:21;;3906:40;;-1:-1:-1;4066:15:11;:39;4133:10;4119:24;;4115:332;;;4160:21;4183;4209:52;4256:4;4209:46;:52::i;:::-;-1:-1:-1;4299:15:11;4275:39;;4328:28;;;:47;;;;4389:28;;;:47;-1:-1:-1;;4115:332:11;3403:1050;;;;;;:::o;2519:185::-;2584:11;2607:16;2638:10;2626:9;:22;;;;;;2607:41;;2685:11;2671:25;;:11;:25;;;;;;;2519:185;-1:-1:-1;;;2519:185:11:o;1824:32::-;;;:::o;725:470:17:-;814:12;839:14;855;873:26;884:6;892;873:10;:26::i;:::-;1033:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1033:32:17;;;;;1023:43;;;;;;939:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;939:246:17;;;;;;;929:257;;;;;;;;;725:470;-1:-1:-1;;;;;725:470:17:o;2825:425:11:-;2898:36;2946:22;2971:35;2990:15;2971:18;:35::i;:::-;2946:60;;3103:27;3158:11;3133:36;;3134:16;3153:1;3134:20;3133:36;;;;;;;;3103:66;;3198:16;:22;3215:4;3198:22;;;;;;;;;;;;;;;3221:21;3198:45;;;;;;;;;;;;;;;;;;;;3179:64;;2825:425;;;;;:::o;666:1040:19:-;750:21;773;796;846:23;:21;:23::i;:::-;829:40;;913:4;898:41;;;:43;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;898:43:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;898:43:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;898:43:19;970;;;;;;;;898;;-1:-1:-1;970:41:19;;;;;;:43;;;;;898;;970;;;;;;;;:41;:43;;;2:2:-1;;;;27:1;24;17:12;2:2;970:43:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;970:43:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;970:43:19;1190:34;;;;;;;;970:43;;-1:-1:-1;1125:16:19;;;;;;1190:32;;;;;;:34;;;;;;;;;;;;;;:32;:34;;;2:2:-1;;;;27:1;24;17:12;2:2;1190:34:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1190:34:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1190:34:19;;;;;;;;;;;;;-1:-1:-1;1190:34:19;;-1:-1:-1;1190:34:19;-1:-1:-1;1238:36:19;;;;;;;;1234:466;;1358:35;;;1501:62;;;1506:39;;;;;;;;:19;:39::i;:::-;:42;;;1501:48;;:62;1481:82;;;;1678:11;1627:62;;1632:39;1652:8;1632:39;;1662:8;1632:39;;:19;:39::i;:::-;:42;1627:48;;:62;1607:82;;;;;-1:-1:-1;1234:466:19;666:1040;;;;;;;;:::o;291:345:17:-;366:14;382;426:6;416:16;;:6;:16;;;;408:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:6;503:15;;:6;:15;;;:53;;541:6;549;503:53;;;522:6;530;503:53;484:72;;-1:-1:-1;484:72:17;-1:-1:-1;574:20:17;;;566:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:345;;;;;:::o;4653:433:11:-;4808:14;4866:40;;:::i;:::-;4909:110;;;;;;;;4997:11;4973:20;4952:18;:41;4951:57;;;;;;4909:110;;;;4866:153;-1:-1:-1;5041:38:11;:26;4866:153;5058:8;5041:16;:26::i;:::-;:36;:38::i;:::-;5029:50;;;4653:433;-1:-1:-1;;;;;;4653:433:11:o;442:121:19:-;530:25;:15;:25;;442:121::o;4526:706:2:-;4607:16;;:::i;:::-;4657:1;4643:11;:15;4635:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4715:14;4711:50;;-1:-1:-1;4738:23:2;;;;;;;;;-1:-1:-1;4738:23:2;;4731:30;;4711:50;4776:24;;;4772:454;;4816:14;4861:11;531:3;4834:23;;;4861:11;4833:39;;;;;;-1:-1:-1;4894:21:2;;;;4886:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4971:26;;;;;;;;4989:6;4971:26;;;;;4964:33;;;;;4772:454;5028:14;5045:45;5061:9;571:31;5078:11;5045:15;:45::i;:::-;5028:62;-1:-1:-1;5112:21:2;;;;5104:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4772:454;4526:706;;;;:::o;1694:237::-;1764:16;;:::i;:::-;1792:9;1823:6;;;:42;;-1:-1:-1;;1858:7:2;;1833:32;;1838:11;;;;1853:1;1838:11;1853:1;1833:21;;;;;:32;1823:42;1815:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:12;;;;;;;;;;;;;1694:237;-1:-1:-1;;;1694:237:2:o;1472:128::-;1571:7;531:3;1571:21;;1472:128::o;897:373:3:-;999:7;1019:9;1030;1043:13;1051:1;1054;1043:7;:13::i;:::-;1018:38;;;;1067:10;1093:1;1080:15;;;;;1090:1;1087;1080:15;1067:28;;1114:1;1109:2;:6;1105:18;;;1122:1;1117:6;;;;1105:18;1133:7;;;;;1155:6;1151:24;;1174:1;1170;:5;;;;;;1163:12;;;;;;;1151:24;1198:1;1194;:5;1186:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:16;1255:1;1258;1261;1247:7;:16::i;:::-;1240:23;897:373;-1:-1:-1;;;;;;;897:373:3:o;216:206::-;278:9;;;344:2;333:1;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o;428:463::-;530:7;568:2;;;564:6;;;569:1;564:6;580:9;;;;;;;604:4;599:9;;;;;;;;;638:4;630;629:5;;628:14;;;;;685:1;:9;;;713:5;;;709:9;;704:14;737:5;;;733:9;;728:14;761:5;;;757:9;;752:14;785:5;;;781:9;;776:14;809:5;;;805:9;;800:14;833:5;;;829:9;;824:14;857:5;;;853:9;;848:14;;;628;;645:1;628:18;623:24;;;;618:29;;;;879:5;;428:463;-1:-1:-1;;428:463:3:o;734:5705:11:-;;;;;;;;;;-1:-1:-1;734:5705:11;;;:::o;:::-;;;;;;;;;;;;;;:::o"
        }
      },
      "interface": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "factory_",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "windowSize_",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "granularity_",
              "type": "uint8"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            }
          ],
          "name": "consult",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "granularity",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            }
          ],
          "name": "observationIndexOf",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "index",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "pairObservations",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "price0Cumulative",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "price1Cumulative",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "periodSize",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "update",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "windowSize",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "bytecode": "61010060405234801561001157600080fd5b506040516113943803806113948339818101604052606081101561003457600080fd5b5080516020820151604090920151909190600160ff82161161009d576040805162461bcd60e51b815260206004820181905260248201527f536c6964696e6757696e646f774f7261636c653a204752414e554c4152495459604482015290519081900360640190fd5b8160ff82168082816100ab57fe5b0460e081905202146100ee5760405162461bcd60e51b81526004018080602001828103825260308152602001806113646030913960400191505060405180910390fd5b606083901b6001600160601b03191660805260a082905260f881901b7fff000000000000000000000000000000000000000000000000000000000000001660c05260e0516001600160a01b039093169260ff909116906111c561019f600039806102f7528061059452806105e752806106475250806101f452806104d752806106135280610766525080610218528061027e528061031b525080610242528061045c528061048552506111c56000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c45a01551161005b578063c45a01551461015f578063c640752d14610190578063dbaad32f146101cd578063e4463eb2146101ea57610088565b8063556f0dc71461008d5780638a14117a146100ab5780638c86f1e4146100c5578063bfcc8e4214610108575b600080fd5b6100956101f2565b6040805160ff9092168252519081900360200190f35b6100b3610216565b60408051918252519081900360200190f35b6100b3600480360360608110156100db57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040909101351661023a565b6101416004803603604081101561011e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561041b565b60408051938452602084019290925282820152519081900360600190f35b61016761045a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101cb600480360360408110156101a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661047e565b005b610095600480360360208110156101e357600080fd5b50356105e2565b6100b3610645565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806102687f00000000000000000000000000000000000000000000000000000000000000008685610669565b9050600061027582610754565b805490915042037f00000000000000000000000000000000000000000000000000000000000000008111156102f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806110e66033913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006002027f000000000000000000000000000000000000000000000000000000000000000003811015610393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611119602c913960400191505060405180910390fd5b60008061039f856107fc565b509150915060006103b08a89610a83565b5090508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610404576103f7856001015484868c610bd6565b9650505050505050610414565b6103f7856002015483868c610bd6565b9392505050565b6000602052816000526040600020818154811061043457fe5b600091825260209091206003909102018054600182015460029092015490935090915083565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006104ab7f00000000000000000000000000000000000000000000000000000000000000008484610669565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020549091505b7f000000000000000000000000000000000000000000000000000000000000000060ff168110156105365773ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054600190810182559152016104d5565b506000610542426105e2565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208054929350909160ff841690811061057b57fe5b60009182526020909120600390910201805490915042037f00000000000000000000000000000000000000000000000000000000000000008111156105da576000806105c6866107fc565b504286556001860191909155600285015550505b505050505050565b6000807f0000000000000000000000000000000000000000000000000000000000000000838161060e57fe5b0490507f000000000000000000000000000000000000000000000000000000000000000060ff16818161063d57fe5b069392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060006106788585610a83565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080610760426105e2565b905060007f000000000000000000000000000000000000000000000000000000000000000060ff168260010160ff168161079657fe5b0690506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208160ff16815481106107e557fe5b906000526020600020906003020192505050919050565b6000806000610809610c49565b90508373ffffffffffffffffffffffffffffffffffffffff16635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561085157600080fd5b505afa158015610865573d6000803e3d6000fd5b505050506040513d602081101561087b57600080fd5b5051604080517f5a3d5493000000000000000000000000000000000000000000000000000000008152905191945073ffffffffffffffffffffffffffffffffffffffff861691635a3d549391600480820192602092909190829003018186803b1580156108e757600080fd5b505afa1580156108fb573d6000803e3d6000fd5b505050506040513d602081101561091157600080fd5b5051604080517f0902f1ac00000000000000000000000000000000000000000000000000000000815290519193506000918291829173ffffffffffffffffffffffffffffffffffffffff891691630902f1ac916004808301926060929190829003018186803b15801561098357600080fd5b505afa158015610997573d6000803e3d6000fd5b505050506040513d60608110156109ad57600080fd5b5080516020820151604090920151909450909250905063ffffffff80821690851614610a795780840363ffffffff81166109fa6dffffffffffffffffffffffffffff808616908716610c53565b600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602870196508063ffffffff16610a52856dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16610c53565b517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16029590950194505b5050509193909250565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061116b6025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b45578284610b48565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bcf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000610be06110c0565b60405180602001604052808588880381610bf657fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690529050610c2b610c268285610e68565b610f2b565b71ffffffffffffffffffffffffffffffffffff169695505050505050565b63ffffffff421690565b610c5b6110c0565b60008211610cb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806111456026913960400191505060405180910390fd5b82610cce5750604080516020810190915260008152610e62565b71ffffffffffffffffffffffffffffffffffff8311610db957600082607085901b81610cf657fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610d8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815250915050610e62565b6000610dd5846e01000000000000000000000000000085610f32565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610d8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b92915050565b610e706110d2565b6000821580610eab57505082517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682810290838281610ea857fe5b04145b610f1657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b5160701c90565b6000806000610f418686611005565b9150915060008480610f4f57fe5b868809905082811115610f63576001820391505b918290039181610f8157848381610f7657fe5b049350505050610414565b848210610fef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610ffa838387611050565b979650505050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015611048576001820391505b509250929050565b6000818103821680838161106057fe5b04925080858161106c57fe5b04945080816000038161107b57fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b604051806020016040528060008152509056fe536c6964696e6757696e646f774f7261636c653a204d495353494e475f484953544f524943414c5f4f42534552564154494f4e536c6964696e6757696e646f774f7261636c653a20554e45585045435445445f54494d455f454c41505345444669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f4d61725844455856324c6962726172793a204944454e544943414c5f414444524553534553a2646970667358221220c366fb28d728122801530290552b9ffcc364928816c77a18b229b929f6350b5864736f6c63430006060033536c6964696e6757696e646f774f7261636c653a2057494e444f575f4e4f545f4556454e4c595f444956495349424c45",
      "bin": "61010060405234801561001157600080fd5b506040516113943803806113948339818101604052606081101561003457600080fd5b5080516020820151604090920151909190600160ff82161161009d576040805162461bcd60e51b815260206004820181905260248201527f536c6964696e6757696e646f774f7261636c653a204752414e554c4152495459604482015290519081900360640190fd5b8160ff82168082816100ab57fe5b0460e081905202146100ee5760405162461bcd60e51b81526004018080602001828103825260308152602001806113646030913960400191505060405180910390fd5b606083901b6001600160601b03191660805260a082905260f881901b7fff000000000000000000000000000000000000000000000000000000000000001660c05260e0516001600160a01b039093169260ff909116906111c561019f600039806102f7528061059452806105e752806106475250806101f452806104d752806106135280610766525080610218528061027e528061031b525080610242528061045c528061048552506111c56000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c45a01551161005b578063c45a01551461015f578063c640752d14610190578063dbaad32f146101cd578063e4463eb2146101ea57610088565b8063556f0dc71461008d5780638a14117a146100ab5780638c86f1e4146100c5578063bfcc8e4214610108575b600080fd5b6100956101f2565b6040805160ff9092168252519081900360200190f35b6100b3610216565b60408051918252519081900360200190f35b6100b3600480360360608110156100db57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040909101351661023a565b6101416004803603604081101561011e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561041b565b60408051938452602084019290925282820152519081900360600190f35b61016761045a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101cb600480360360408110156101a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661047e565b005b610095600480360360208110156101e357600080fd5b50356105e2565b6100b3610645565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806102687f00000000000000000000000000000000000000000000000000000000000000008685610669565b9050600061027582610754565b805490915042037f00000000000000000000000000000000000000000000000000000000000000008111156102f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806110e66033913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006002027f000000000000000000000000000000000000000000000000000000000000000003811015610393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611119602c913960400191505060405180910390fd5b60008061039f856107fc565b509150915060006103b08a89610a83565b5090508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610404576103f7856001015484868c610bd6565b9650505050505050610414565b6103f7856002015483868c610bd6565b9392505050565b6000602052816000526040600020818154811061043457fe5b600091825260209091206003909102018054600182015460029092015490935090915083565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006104ab7f00000000000000000000000000000000000000000000000000000000000000008484610669565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020549091505b7f000000000000000000000000000000000000000000000000000000000000000060ff168110156105365773ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054600190810182559152016104d5565b506000610542426105e2565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208054929350909160ff841690811061057b57fe5b60009182526020909120600390910201805490915042037f00000000000000000000000000000000000000000000000000000000000000008111156105da576000806105c6866107fc565b504286556001860191909155600285015550505b505050505050565b6000807f0000000000000000000000000000000000000000000000000000000000000000838161060e57fe5b0490507f000000000000000000000000000000000000000000000000000000000000000060ff16818161063d57fe5b069392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060006106788585610a83565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080610760426105e2565b905060007f000000000000000000000000000000000000000000000000000000000000000060ff168260010160ff168161079657fe5b0690506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208160ff16815481106107e557fe5b906000526020600020906003020192505050919050565b6000806000610809610c49565b90508373ffffffffffffffffffffffffffffffffffffffff16635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561085157600080fd5b505afa158015610865573d6000803e3d6000fd5b505050506040513d602081101561087b57600080fd5b5051604080517f5a3d5493000000000000000000000000000000000000000000000000000000008152905191945073ffffffffffffffffffffffffffffffffffffffff861691635a3d549391600480820192602092909190829003018186803b1580156108e757600080fd5b505afa1580156108fb573d6000803e3d6000fd5b505050506040513d602081101561091157600080fd5b5051604080517f0902f1ac00000000000000000000000000000000000000000000000000000000815290519193506000918291829173ffffffffffffffffffffffffffffffffffffffff891691630902f1ac916004808301926060929190829003018186803b15801561098357600080fd5b505afa158015610997573d6000803e3d6000fd5b505050506040513d60608110156109ad57600080fd5b5080516020820151604090920151909450909250905063ffffffff80821690851614610a795780840363ffffffff81166109fa6dffffffffffffffffffffffffffff808616908716610c53565b600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602870196508063ffffffff16610a52856dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16610c53565b517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16029590950194505b5050509193909250565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061116b6025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b45578284610b48565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bcf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000610be06110c0565b60405180602001604052808588880381610bf657fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690529050610c2b610c268285610e68565b610f2b565b71ffffffffffffffffffffffffffffffffffff169695505050505050565b63ffffffff421690565b610c5b6110c0565b60008211610cb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806111456026913960400191505060405180910390fd5b82610cce5750604080516020810190915260008152610e62565b71ffffffffffffffffffffffffffffffffffff8311610db957600082607085901b81610cf657fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610d8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815250915050610e62565b6000610dd5846e01000000000000000000000000000085610f32565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610d8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b92915050565b610e706110d2565b6000821580610eab57505082517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682810290838281610ea857fe5b04145b610f1657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b5160701c90565b6000806000610f418686611005565b9150915060008480610f4f57fe5b868809905082811115610f63576001820391505b918290039181610f8157848381610f7657fe5b049350505050610414565b848210610fef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610ffa838387611050565b979650505050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015611048576001820391505b509250929050565b6000818103821680838161106057fe5b04925080858161106c57fe5b04945080816000038161107b57fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b604051806020016040528060008152509056fe536c6964696e6757696e646f774f7261636c653a204d495353494e475f484953544f524943414c5f4f42534552564154494f4e536c6964696e6757696e646f774f7261636c653a20554e45585045435445445f54494d455f454c41505345444669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f4d61725844455856324c6962726172793a204944454e544943414c5f414444524553534553a2646970667358221220c366fb28d728122801530290552b9ffcc364928816c77a18b229b929f6350b5864736f6c63430006060033536c6964696e6757696e646f774f7261636c653a2057494e444f575f4e4f545f4556454e4c595f444956495349424c45",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100885760003560e01c8063c45a01551161005b578063c45a01551461015f578063c640752d14610190578063dbaad32f146101cd578063e4463eb2146101ea57610088565b8063556f0dc71461008d5780638a14117a146100ab5780638c86f1e4146100c5578063bfcc8e4214610108575b600080fd5b6100956101f2565b6040805160ff9092168252519081900360200190f35b6100b3610216565b60408051918252519081900360200190f35b6100b3600480360360608110156100db57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040909101351661023a565b6101416004803603604081101561011e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561041b565b60408051938452602084019290925282820152519081900360600190f35b61016761045a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101cb600480360360408110156101a657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661047e565b005b610095600480360360208110156101e357600080fd5b50356105e2565b6100b3610645565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806102687f00000000000000000000000000000000000000000000000000000000000000008685610669565b9050600061027582610754565b805490915042037f00000000000000000000000000000000000000000000000000000000000000008111156102f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806110e66033913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006002027f000000000000000000000000000000000000000000000000000000000000000003811015610393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611119602c913960400191505060405180910390fd5b60008061039f856107fc565b509150915060006103b08a89610a83565b5090508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610404576103f7856001015484868c610bd6565b9650505050505050610414565b6103f7856002015483868c610bd6565b9392505050565b6000602052816000526040600020818154811061043457fe5b600091825260209091206003909102018054600182015460029092015490935090915083565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006104ab7f00000000000000000000000000000000000000000000000000000000000000008484610669565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020549091505b7f000000000000000000000000000000000000000000000000000000000000000060ff168110156105365773ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054600190810182559152016104d5565b506000610542426105e2565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208054929350909160ff841690811061057b57fe5b60009182526020909120600390910201805490915042037f00000000000000000000000000000000000000000000000000000000000000008111156105da576000806105c6866107fc565b504286556001860191909155600285015550505b505050505050565b6000807f0000000000000000000000000000000000000000000000000000000000000000838161060e57fe5b0490507f000000000000000000000000000000000000000000000000000000000000000060ff16818161063d57fe5b069392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060006106788585610a83565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080610760426105e2565b905060007f000000000000000000000000000000000000000000000000000000000000000060ff168260010160ff168161079657fe5b0690506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208160ff16815481106107e557fe5b906000526020600020906003020192505050919050565b6000806000610809610c49565b90508373ffffffffffffffffffffffffffffffffffffffff16635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561085157600080fd5b505afa158015610865573d6000803e3d6000fd5b505050506040513d602081101561087b57600080fd5b5051604080517f5a3d5493000000000000000000000000000000000000000000000000000000008152905191945073ffffffffffffffffffffffffffffffffffffffff861691635a3d549391600480820192602092909190829003018186803b1580156108e757600080fd5b505afa1580156108fb573d6000803e3d6000fd5b505050506040513d602081101561091157600080fd5b5051604080517f0902f1ac00000000000000000000000000000000000000000000000000000000815290519193506000918291829173ffffffffffffffffffffffffffffffffffffffff891691630902f1ac916004808301926060929190829003018186803b15801561098357600080fd5b505afa158015610997573d6000803e3d6000fd5b505050506040513d60608110156109ad57600080fd5b5080516020820151604090920151909450909250905063ffffffff80821690851614610a795780840363ffffffff81166109fa6dffffffffffffffffffffffffffff808616908716610c53565b600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602870196508063ffffffff16610a52856dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16610c53565b517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16029590950194505b5050509193909250565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061116b6025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610b45578284610b48565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610bcf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000610be06110c0565b60405180602001604052808588880381610bf657fe5b047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690529050610c2b610c268285610e68565b610f2b565b71ffffffffffffffffffffffffffffffffffff169695505050505050565b63ffffffff421690565b610c5b6110c0565b60008211610cb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806111456026913960400191505060405180910390fd5b82610cce5750604080516020810190915260008152610e62565b71ffffffffffffffffffffffffffffffffffff8311610db957600082607085901b81610cf657fe5b0490507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610d8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815250915050610e62565b6000610dd5846e01000000000000000000000000000085610f32565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115610d8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b92915050565b610e706110d2565b6000821580610eab57505082517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682810290838281610ea857fe5b04145b610f1657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b5160701c90565b6000806000610f418686611005565b9150915060008480610f4f57fe5b868809905082811115610f63576001820391505b918290039181610f8157848381610f7657fe5b049350505050610414565b848210610fef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610ffa838387611050565b979650505050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84860990508385029250828103915082811015611048576001820391505b509250929050565b6000818103821680838161106057fe5b04925080858161106c57fe5b04945080816000038161107b57fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b604051806020016040528060008152509056fe536c6964696e6757696e646f774f7261636c653a204d495353494e475f484953544f524943414c5f4f42534552564154494f4e536c6964696e6757696e646f774f7261636c653a20554e45585045435445445f54494d455f454c41505345444669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f4d61725844455856324c6962726172793a204944454e544943414c5f414444524553534553a2646970667358221220c366fb28d728122801530290552b9ffcc364928816c77a18b229b929f6350b5864736f6c63430006060033",
      "srcmap": "734:5705:11:-:0;;;2005:427;5:9:-1;2:2;;;27:1;24;17:12;2:2;2005:427:11;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2005:427:11;;;;;;;;;;;;;;2113:1;2098:16;;;;2090:61;;;;;-1:-1:-1;;;2090:61:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2242:11;2182:56;;;;2242:11;2182:56;2196:26;;;;;2183:39;;;;2182:56;:71;2161:166;;;;-1:-1:-1;;;2161:166:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2337:18;;;;-1:-1:-1;;;;;;2337:18:11;;;2365:24;;;;2399:26;;;;;;;;734:5705;;-1:-1:-1;;;;;734:5705:11;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "734:5705:11:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;734:5705:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;1673:34:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1088:32;;;:::i;:::-;;;;;;;;;;;;;;;;5375:1062;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5375:1062:11;;;;;;;;;;;;;;;;;;:::i;1941:57::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1941:57:11;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;952:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3403:1050;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3403:1050:11;;;;;;;;;;;:::i;:::-;;2519:185;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2519:185:11;;:::i;1824:32::-;;;:::i;1673:34::-;;;:::o;1088:32::-;;;:::o;5375:1062::-;5465:14;5491:12;5506:52;5531:7;5540;5549:8;5506:24;:52::i;:::-;5491:67;;5568:36;5607:33;5635:4;5607:27;:33::i;:::-;5688:26;;5568:72;;-1:-1:-1;5670:15:11;:44;5747:10;5732:25;;;5724:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5891:10;5904:1;5891:14;5878:10;:27;5863:11;:42;;5855:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5966:21;5989;6015:52;6062:4;6015:46;:52::i;:::-;5965:102;;;;;6078:14;6097:46;6125:7;6134:8;6097:27;:46::i;:::-;6077:66;;;6168:7;6158:17;;:6;:17;;;6154:277;;;6198:92;6215:16;:33;;;6250:16;6268:11;6281:8;6198:16;:92::i;:::-;6191:99;;;;;;;;;;6154:277;6328:92;6345:16;:33;;;6380:16;6398:11;6411:8;6328:16;:92::i;5375:1062::-;;;;;;:::o;1941:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1941:57:11;;-1:-1:-1;1941:57:11;:::o;952:32::-;;;:::o;3403:1050::-;3470:12;3485:49;3510:7;3519:6;3527;3485:24;:49::i;:::-;3631:22;;;3622:6;3631:22;;;;;;;;;;:29;3470:64;;-1:-1:-1;3617:121:11;3666:11;3662:15;;:1;:15;3617:121;;;3698:22;;;:16;:22;;;;;;;;;;27:10:-1;;3698:29:11;23:18:-1;;;45:23;;3698:29:11;;3679:3;3617:121;;;;3802:22;3827:35;3846:15;3827:18;:35::i;:::-;3906:22;;;3872:31;3906:22;;;;;;;;;;:40;;3802:60;;-1:-1:-1;3872:31:11;;3906:40;;;;;;;;;;;;;;;;;;;;;;;4084:21;;3906:40;;-1:-1:-1;4066:15:11;:39;4133:10;4119:24;;4115:332;;;4160:21;4183;4209:52;4256:4;4209:46;:52::i;:::-;-1:-1:-1;4299:15:11;4275:39;;4328:28;;;:47;;;;4389:28;;;:47;-1:-1:-1;;4115:332:11;3403:1050;;;;;;:::o;2519:185::-;2584:11;2607:16;2638:10;2626:9;:22;;;;;;2607:41;;2685:11;2671:25;;:11;:25;;;;;;;2519:185;-1:-1:-1;;;2519:185:11:o;1824:32::-;;;:::o;725:470:17:-;814:12;839:14;855;873:26;884:6;892;873:10;:26::i;:::-;1033:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1033:32:17;;;;;1023:43;;;;;;939:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;939:246:17;;;;;;;929:257;;;;;;;;;725:470;-1:-1:-1;;;;;725:470:17:o;2825:425:11:-;2898:36;2946:22;2971:35;2990:15;2971:18;:35::i;:::-;2946:60;;3103:27;3158:11;3133:36;;3134:16;3153:1;3134:20;3133:36;;;;;;;;3103:66;;3198:16;:22;3215:4;3198:22;;;;;;;;;;;;;;;3221:21;3198:45;;;;;;;;;;;;;;;;;;;;3179:64;;2825:425;;;;;:::o;666:1040:19:-;750:21;773;796;846:23;:21;:23::i;:::-;829:40;;913:4;898:41;;;:43;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;898:43:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;898:43:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;898:43:19;970;;;;;;;;898;;-1:-1:-1;970:41:19;;;;;;:43;;;;;898;;970;;;;;;;;:41;:43;;;2:2:-1;;;;27:1;24;17:12;2:2;970:43:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;970:43:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;970:43:19;1190:34;;;;;;;;970:43;;-1:-1:-1;1125:16:19;;;;;;1190:32;;;;;;:34;;;;;;;;;;;;;;:32;:34;;;2:2:-1;;;;27:1;24;17:12;2:2;1190:34:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1190:34:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1190:34:19;;;;;;;;;;;;;-1:-1:-1;1190:34:19;;-1:-1:-1;1190:34:19;-1:-1:-1;1238:36:19;;;;;;;;1234:466;;1358:35;;;1501:62;;;1506:39;;;;;;;;:19;:39::i;:::-;:42;;;1501:48;;:62;1481:82;;;;1678:11;1627:62;;1632:39;1652:8;1632:39;;1662:8;1632:39;;:19;:39::i;:::-;:42;1627:48;;:62;1607:82;;;;;-1:-1:-1;1234:466:19;666:1040;;;;;;;;:::o;291:345:17:-;366:14;382;426:6;416:16;;:6;:16;;;;408:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:6;503:15;;:6;:15;;;:53;;541:6;549;503:53;;;522:6;530;503:53;484:72;;-1:-1:-1;484:72:17;-1:-1:-1;574:20:17;;;566:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:345;;;;;:::o;4653:433:11:-;4808:14;4866:40;;:::i;:::-;4909:110;;;;;;;;4997:11;4973:20;4952:18;:41;4951:57;;;;;;4909:110;;;;4866:153;-1:-1:-1;5041:38:11;:26;4866:153;5058:8;5041:16;:26::i;:::-;:36;:38::i;:::-;5029:50;;;4653:433;-1:-1:-1;;;;;;4653:433:11:o;442:121:19:-;530:25;:15;:25;;442:121::o;4526:706:2:-;4607:16;;:::i;:::-;4657:1;4643:11;:15;4635:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4715:14;4711:50;;-1:-1:-1;4738:23:2;;;;;;;;;-1:-1:-1;4738:23:2;;4731:30;;4711:50;4776:24;;;4772:454;;4816:14;4861:11;531:3;4834:23;;;4861:11;4833:39;;;;;;-1:-1:-1;4894:21:2;;;;4886:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4971:26;;;;;;;;4989:6;4971:26;;;;;4964:33;;;;;4772:454;5028:14;5045:45;5061:9;571:31;5078:11;5045:15;:45::i;:::-;5028:62;-1:-1:-1;5112:21:2;;;;5104:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4772:454;4526:706;;;;:::o;1694:237::-;1764:16;;:::i;:::-;1792:9;1823:6;;;:42;;-1:-1:-1;;1858:7:2;;1833:32;;1838:11;;;;1853:1;1838:11;1853:1;1833:21;;;;;:32;1823:42;1815:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1912:12;;;;;;;;;;;;;1694:237;-1:-1:-1;;;1694:237:2:o;1472:128::-;1571:7;531:3;1571:21;;1472:128::o;897:373:3:-;999:7;1019:9;1030;1043:13;1051:1;1054;1043:7;:13::i;:::-;1018:38;;;;1067:10;1093:1;1080:15;;;;;1090:1;1087;1080:15;1067:28;;1114:1;1109:2;:6;1105:18;;;1122:1;1117:6;;;;1105:18;1133:7;;;;;1155:6;1151:24;;1174:1;1170;:5;;;;;;1163:12;;;;;;;1151:24;1198:1;1194;:5;1186:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:16;1255:1;1258;1261;1247:7;:16::i;:::-;1240:23;897:373;-1:-1:-1;;;;;;;897:373:3:o;216:206::-;278:9;;;344:2;333:1;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o;428:463::-;530:7;568:2;;;564:6;;;569:1;564:6;580:9;;;;;;;604:4;599:9;;;;;;;;;638:4;630;629:5;;628:14;;;;;685:1;:9;;;713:5;;;709:9;;704:14;737:5;;;733:9;;728:14;761:5;;;757:9;;752:14;785:5;;;781:9;;776:14;809:5;;;805:9;;800:14;833:5;;;829:9;;824:14;857:5;;;853:9;;848:14;;;628;;645:1;628:18;623:24;;;;618:29;;;;879:5;;428:463;-1:-1:-1;;428:463:3:o;734:5705:11:-;;;;;;;;;;-1:-1:-1;734:5705:11;;;:::o;:::-;;;;;;;;;;;;;;:::o"
    },
    "contracts/examples/ExampleSwapToPrice.sol:ExampleSwapToPrice": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "factory_",
              "type": "address"
            },
            {
              "internalType": "contract IMarXDEXV2Router01",
              "name": "router_",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "router",
          "outputs": [
            {
              "internalType": "contract IMarXDEXV2Router01",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxSpendTokenA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxSpendTokenB",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapToPrice",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60c060405234801561001057600080fd5b506040516112c83803806112c88339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b811660a052911b1660805260805160601c60a05160601c61123b61008d600039806101df52806105905250806102c3528061039a52806105b4525061123b6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063bef90fd314610046578063c45a0155146100aa578063f887ea40146100db575b600080fd5b6100a8600480360361010081101561005d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e001356100e3565b005b6100b261058e565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b26105b2565b85158015906100f157508415155b61015c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4578616d706c6553776170546f50726963653a205a45524f5f50524943450000604482015290519081900360640190fd5b8315158061016957508215155b6101d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4578616d706c6553776170546f50726963653a205a45524f5f5350454e440000604482015290519081900360640190fd5b6000806000806102057f00000000000000000000000000000000000000000000000000000000000000008d8d6105d6565b915091506102158a8a84846106be565b9094509250505080610272576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111e46022913960400191505060405180910390fd5b60008261027f5785610281565b865b90508082111561028f578091505b60008361029c578a61029e565b8b5b90506000846102ad578c6102af565b8b5b90506102bd823330876107aa565b6102e8827f00000000000000000000000000000000000000000000000000000000000000008661097a565b6040805160028082526060808301845292602083019080368337019050509050828160008151811061031657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061035e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed1739866000848c8c6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561046d578181015183820152602001610455565b505050509050019650505050505050600060405180830381600087803b15801561049657600080fd5b505af11580156104aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156104f157600080fd5b810190808051604051939291908464010000000082111561051157600080fd5b90830190602082018581111561052657600080fd5b825186602082028301116401000000008211171561054357600080fd5b82525081516020918201928201910280838360005b83811015610570578181015183820152602001610558565b50505050905001604052505050505050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060006105e58585610b41565b5090506000806105f6888888610c94565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561063b57600080fd5b505afa15801561064f573d6000803e3d6000fd5b505050506040513d606081101561066557600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146106ac5780826106af565b81815b90999098509650505050505050565b600080856106cd858786610d7f565b10915060006106e2858563ffffffff610e5416565b9050600061073461072f6106fe846103e863ffffffff610e5416565b86610709578961070b565b8a5b61072a6103e58961071c578d61071e565b8c5b9063ffffffff610e5416565b610d7f565b610ee0565b905060006103e58561075757610752876103e863ffffffff610e5416565b610769565b610769886103e863ffffffff610e5416565b8161077057fe5b0490508082101561078b5750600093508392506107a1915050565b61079b828263ffffffff61103516565b93505050505b94509492505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061088857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161084b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146108ea576040519150601f19603f3d011682016040523d82523d6000602084013e6108ef565b606091505b509150915081801561091d57508051158061091d575080806020019051602081101561091a57600080fd5b50515b610972576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806111636031913960400191505060405180910390fd5b505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310610a5057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a13565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ab2576040519150601f19603f3d011682016040523d82523d6000602084013e610ab7565b606091505b5091509150818015610ae5575080511580610ae55750808060200190516020811015610ae257600080fd5b50515b610b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806111b9602b913960400191505060405180910390fd5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806111946025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610c03578284610c06565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610c8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000806000610ca38585610b41565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000806000610d8e86866110a7565b9150915060008480610d9c57fe5b868809905082811115610db0576001820391505b918290039181610dce57848381610dc357fe5b049350505050610e4d565b848210610e3c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610e478383876110f2565b93505050505b9392505050565b6000811580610e6f57505080820282828281610e6c57fe5b04145b610eda57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b600081610eef57506000611030565b8160017001000000000000000000000000000000008210610f155760809190911c9060401b5b680100000000000000008210610f305760409190911c9060201b5b6401000000008210610f475760209190911c9060101b5b620100008210610f5c5760109190911c9060081b5b6101008210610f705760089190911c9060041b5b60108210610f835760049190911c9060021b5b60088210610f8f5760011b5b6001818581610f9a57fe5b048201901c90506001818581610fac57fe5b048201901c90506001818581610fbe57fe5b048201901c90506001818581610fd057fe5b048201901c90506001818581610fe257fe5b048201901c90506001818581610ff457fe5b048201901c9050600181858161100657fe5b048201901c9050600081858161101857fe5b049050808210611028578061102a565b815b93505050505b919050565b80820382811115610eda57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609905083850292508281039150828110156110ea576001820391505b509250929050565b6000818103821680838161110257fe5b04925080858161110e57fe5b04945080816000038161111d57fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fe5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65644d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c65644578616d706c6553776170546f50726963653a205a45524f5f414d4f554e545f494ea26469706673582212202a054c5410fea4d8331d5ea93160d22c7bb887a481dccbf5ce5e5011ca86329164736f6c63430006060033",
          "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x12C8 CODESIZE SUB DUP1 PUSH2 0x12C8 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SHL AND PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x123B PUSH2 0x8D PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1DF MSTORE DUP1 PUSH2 0x590 MSTORE POP DUP1 PUSH2 0x2C3 MSTORE DUP1 PUSH2 0x39A MSTORE DUP1 PUSH2 0x5B4 MSTORE POP PUSH2 0x123B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBEF90FD3 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0xF887EA40 EQ PUSH2 0xDB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0xC0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0xE3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB2 PUSH2 0x58E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x5B2 JUMP JUMPDEST DUP6 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xF1 JUMPI POP DUP5 ISZERO ISZERO JUMPDEST PUSH2 0x15C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4578616D706C6553776170546F50726963653A205A45524F5F50524943450000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 ISZERO ISZERO DUP1 PUSH2 0x169 JUMPI POP DUP3 ISZERO ISZERO JUMPDEST PUSH2 0x1D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4578616D706C6553776170546F50726963653A205A45524F5F5350454E440000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x205 PUSH32 0x0 DUP14 DUP14 PUSH2 0x5D6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x215 DUP11 DUP11 DUP5 DUP5 PUSH2 0x6BE JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP POP DUP1 PUSH2 0x272 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11E4 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x27F JUMPI DUP6 PUSH2 0x281 JUMP JUMPDEST DUP7 JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x28F JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0x29C JUMPI DUP11 PUSH2 0x29E JUMP JUMPDEST DUP12 JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH2 0x2AD JUMPI DUP13 PUSH2 0x2AF JUMP JUMPDEST DUP12 JUMPDEST SWAP1 POP PUSH2 0x2BD DUP3 CALLER ADDRESS DUP8 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x2E8 DUP3 PUSH32 0x0 DUP7 PUSH2 0x97A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x316 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x35E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x38ED1739 DUP7 PUSH1 0x0 DUP5 DUP13 DUP13 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x46D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x455 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x543 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x570 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x558 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x5E5 DUP6 DUP6 PUSH2 0xB41 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x5F6 DUP9 DUP9 DUP9 PUSH2 0xC94 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x63B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x64F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x665 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x6AC JUMPI DUP1 DUP3 PUSH2 0x6AF JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH2 0x6CD DUP6 DUP8 DUP7 PUSH2 0xD7F JUMP JUMPDEST LT SWAP2 POP PUSH1 0x0 PUSH2 0x6E2 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x734 PUSH2 0x72F PUSH2 0x6FE DUP5 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST DUP7 PUSH2 0x709 JUMPI DUP10 PUSH2 0x70B JUMP JUMPDEST DUP11 JUMPDEST PUSH2 0x72A PUSH2 0x3E5 DUP10 PUSH2 0x71C JUMPI DUP14 PUSH2 0x71E JUMP JUMPDEST DUP13 JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH2 0xD7F JUMP JUMPDEST PUSH2 0xEE0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3E5 DUP6 PUSH2 0x757 JUMPI PUSH2 0x752 DUP8 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH2 0x769 JUMP JUMPDEST PUSH2 0x769 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST DUP2 PUSH2 0x770 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x78B JUMPI POP PUSH1 0x0 SWAP4 POP DUP4 SWAP3 POP PUSH2 0x7A1 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x79B DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1035 AND JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x888 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x84B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x8EA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x8EF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x91D JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x91D JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x91A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x972 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1163 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA50 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA13 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAB2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xAB7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0xAE5 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0xAE5 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0xB3A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11B9 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xBC9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1194 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xC03 JUMPI DUP3 DUP5 PUSH2 0xC06 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xC8D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xCA3 DUP6 DUP6 PUSH2 0xB41 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x236595447338C75B512D89A54E3B5160E3A38C8FFE13F0E88C634CA037665806 PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xD8E DUP7 DUP7 PUSH2 0x10A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xD9C JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xDB0 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0xDCE JUMPI DUP5 DUP4 DUP2 PUSH2 0xDC3 JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0xE4D JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0xE3C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE47 DUP4 DUP4 DUP8 PUSH2 0x10F2 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xE6F JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xE6C JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xEDA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xEEF JUMPI POP PUSH1 0x0 PUSH2 0x1030 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0xF15 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0xF30 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0xF47 JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0xF5C JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0xF70 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0xF83 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0xF8F JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xF9A JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xFAC JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xFBE JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xFD0 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xFE2 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xFF4 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1006 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x1018 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x1028 JUMPI DUP1 PUSH2 0x102A JUMP JUMPDEST DUP2 JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xEDA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0x10EA JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0x1102 JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0x110E JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0x111D JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP INVALID SLOAD PUSH19 0x616E7366657248656C7065723A3A7472616E73 PUSH7 0x657246726F6D3A KECCAK256 PUSH21 0x72616E7366657246726F6D206661696C65644D6172 PC DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494445 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 SLOAD PUSH19 0x616E7366657248656C7065723A3A7361666541 PUSH17 0x70726F76653A20617070726F7665206661 PUSH10 0x6C65644578616D706C65 MSTORE8 PUSH24 0x6170546F50726963653A205A45524F5F414D4F554E545F49 0x4E LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2A SDIV 0x4C SLOAD LT INVALID LOG4 0xD8 CALLER SAR 0x5E 0xA9 BALANCE PUSH1 0xD2 0x2C PUSH28 0xB887A481DCCBF5CE5E5011CA86329164736F6C634300060600330000 ",
          "sourceMap": "463:2414:12:-:0;;;617:126;5:9:-1;2:2;;;27:1;24;17:12;2:2;617:126:12;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;617:126:12;;;;;;;-1:-1:-1;;;;;;692:18:12;;;;;;;;720:16;;;;;463:2414;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {
            "6015": [
              {
                "length": 32,
                "start": 707
              },
              {
                "length": 32,
                "start": 922
              },
              {
                "length": 32,
                "start": 1460
              }
            ],
            "6017": [
              {
                "length": 32,
                "start": 479
              },
              {
                "length": 32,
                "start": 1424
              }
            ]
          },
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100415760003560e01c8063bef90fd314610046578063c45a0155146100aa578063f887ea40146100db575b600080fd5b6100a8600480360361010081101561005d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e001356100e3565b005b6100b261058e565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b26105b2565b85158015906100f157508415155b61015c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4578616d706c6553776170546f50726963653a205a45524f5f50524943450000604482015290519081900360640190fd5b8315158061016957508215155b6101d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4578616d706c6553776170546f50726963653a205a45524f5f5350454e440000604482015290519081900360640190fd5b6000806000806102057f00000000000000000000000000000000000000000000000000000000000000008d8d6105d6565b915091506102158a8a84846106be565b9094509250505080610272576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111e46022913960400191505060405180910390fd5b60008261027f5785610281565b865b90508082111561028f578091505b60008361029c578a61029e565b8b5b90506000846102ad578c6102af565b8b5b90506102bd823330876107aa565b6102e8827f00000000000000000000000000000000000000000000000000000000000000008661097a565b6040805160028082526060808301845292602083019080368337019050509050828160008151811061031657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061035e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed1739866000848c8c6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561046d578181015183820152602001610455565b505050509050019650505050505050600060405180830381600087803b15801561049657600080fd5b505af11580156104aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156104f157600080fd5b810190808051604051939291908464010000000082111561051157600080fd5b90830190602082018581111561052657600080fd5b825186602082028301116401000000008211171561054357600080fd5b82525081516020918201928201910280838360005b83811015610570578181015183820152602001610558565b50505050905001604052505050505050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060006105e58585610b41565b5090506000806105f6888888610c94565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561063b57600080fd5b505afa15801561064f573d6000803e3d6000fd5b505050506040513d606081101561066557600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146106ac5780826106af565b81815b90999098509650505050505050565b600080856106cd858786610d7f565b10915060006106e2858563ffffffff610e5416565b9050600061073461072f6106fe846103e863ffffffff610e5416565b86610709578961070b565b8a5b61072a6103e58961071c578d61071e565b8c5b9063ffffffff610e5416565b610d7f565b610ee0565b905060006103e58561075757610752876103e863ffffffff610e5416565b610769565b610769886103e863ffffffff610e5416565b8161077057fe5b0490508082101561078b5750600093508392506107a1915050565b61079b828263ffffffff61103516565b93505050505b94509492505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061088857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161084b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146108ea576040519150601f19603f3d011682016040523d82523d6000602084013e6108ef565b606091505b509150915081801561091d57508051158061091d575080806020019051602081101561091a57600080fd5b50515b610972576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806111636031913960400191505060405180910390fd5b505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310610a5057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a13565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ab2576040519150601f19603f3d011682016040523d82523d6000602084013e610ab7565b606091505b5091509150818015610ae5575080511580610ae55750808060200190516020811015610ae257600080fd5b50515b610b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806111b9602b913960400191505060405180910390fd5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806111946025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610c03578284610c06565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610c8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000806000610ca38585610b41565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000806000610d8e86866110a7565b9150915060008480610d9c57fe5b868809905082811115610db0576001820391505b918290039181610dce57848381610dc357fe5b049350505050610e4d565b848210610e3c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610e478383876110f2565b93505050505b9392505050565b6000811580610e6f57505080820282828281610e6c57fe5b04145b610eda57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b600081610eef57506000611030565b8160017001000000000000000000000000000000008210610f155760809190911c9060401b5b680100000000000000008210610f305760409190911c9060201b5b6401000000008210610f475760209190911c9060101b5b620100008210610f5c5760109190911c9060081b5b6101008210610f705760089190911c9060041b5b60108210610f835760049190911c9060021b5b60088210610f8f5760011b5b6001818581610f9a57fe5b048201901c90506001818581610fac57fe5b048201901c90506001818581610fbe57fe5b048201901c90506001818581610fd057fe5b048201901c90506001818581610fe257fe5b048201901c90506001818581610ff457fe5b048201901c9050600181858161100657fe5b048201901c9050600081858161101857fe5b049050808210611028578061102a565b815b93505050505b919050565b80820382811115610eda57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609905083850292508281039150828110156110ea576001820391505b509250929050565b6000818103821680838161110257fe5b04925080858161110e57fe5b04945080816000038161111d57fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fe5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65644d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c65644578616d706c6553776170546f50726963653a205a45524f5f414d4f554e545f494ea26469706673582212202a054c5410fea4d8331d5ea93160d22c7bb887a481dccbf5ce5e5011ca86329164736f6c63430006060033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBEF90FD3 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0xF887EA40 EQ PUSH2 0xDB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0xC0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0xE3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xB2 PUSH2 0x58E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x5B2 JUMP JUMPDEST DUP6 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xF1 JUMPI POP DUP5 ISZERO ISZERO JUMPDEST PUSH2 0x15C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4578616D706C6553776170546F50726963653A205A45524F5F50524943450000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 ISZERO ISZERO DUP1 PUSH2 0x169 JUMPI POP DUP3 ISZERO ISZERO JUMPDEST PUSH2 0x1D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4578616D706C6553776170546F50726963653A205A45524F5F5350454E440000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x205 PUSH32 0x0 DUP14 DUP14 PUSH2 0x5D6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x215 DUP11 DUP11 DUP5 DUP5 PUSH2 0x6BE JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP POP DUP1 PUSH2 0x272 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11E4 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x27F JUMPI DUP6 PUSH2 0x281 JUMP JUMPDEST DUP7 JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x28F JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0x29C JUMPI DUP11 PUSH2 0x29E JUMP JUMPDEST DUP12 JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH2 0x2AD JUMPI DUP13 PUSH2 0x2AF JUMP JUMPDEST DUP12 JUMPDEST SWAP1 POP PUSH2 0x2BD DUP3 CALLER ADDRESS DUP8 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x2E8 DUP3 PUSH32 0x0 DUP7 PUSH2 0x97A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x316 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x35E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x38ED1739 DUP7 PUSH1 0x0 DUP5 DUP13 DUP13 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x46D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x455 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x543 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x570 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x558 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x5E5 DUP6 DUP6 PUSH2 0xB41 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x5F6 DUP9 DUP9 DUP9 PUSH2 0xC94 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x63B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x64F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x665 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x6AC JUMPI DUP1 DUP3 PUSH2 0x6AF JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH2 0x6CD DUP6 DUP8 DUP7 PUSH2 0xD7F JUMP JUMPDEST LT SWAP2 POP PUSH1 0x0 PUSH2 0x6E2 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x734 PUSH2 0x72F PUSH2 0x6FE DUP5 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST DUP7 PUSH2 0x709 JUMPI DUP10 PUSH2 0x70B JUMP JUMPDEST DUP11 JUMPDEST PUSH2 0x72A PUSH2 0x3E5 DUP10 PUSH2 0x71C JUMPI DUP14 PUSH2 0x71E JUMP JUMPDEST DUP13 JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH2 0xD7F JUMP JUMPDEST PUSH2 0xEE0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3E5 DUP6 PUSH2 0x757 JUMPI PUSH2 0x752 DUP8 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST PUSH2 0x769 JUMP JUMPDEST PUSH2 0x769 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xE54 AND JUMP JUMPDEST DUP2 PUSH2 0x770 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x78B JUMPI POP PUSH1 0x0 SWAP4 POP DUP4 SWAP3 POP PUSH2 0x7A1 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x79B DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x1035 AND JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x888 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x84B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x8EA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x8EF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x91D JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x91D JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x91A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x972 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1163 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xA50 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xA13 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAB2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xAB7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0xAE5 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0xAE5 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0xB3A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x11B9 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xBC9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1194 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH2 0xC03 JUMPI DUP3 DUP5 PUSH2 0xC06 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xC8D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D61725844455856324C6962726172793A205A45524F5F414444524553530000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xCA3 DUP6 DUP6 PUSH2 0xB41 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x236595447338C75B512D89A54E3B5160E3A38C8FFE13F0E88C634CA037665806 PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xD8E DUP7 DUP7 PUSH2 0x10A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xD9C JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xDB0 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0xDCE JUMPI DUP5 DUP4 DUP2 PUSH2 0xDC3 JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0xE4D JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0xE3C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE47 DUP4 DUP4 DUP8 PUSH2 0x10F2 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xE6F JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xE6C JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xEDA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xEEF JUMPI POP PUSH1 0x0 PUSH2 0x1030 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0xF15 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0xF30 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0xF47 JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0xF5C JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0xF70 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0xF83 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0xF8F JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xF9A JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xFAC JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xFBE JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xFD0 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xFE2 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xFF4 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1006 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x1018 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x1028 JUMPI DUP1 PUSH2 0x102A JUMP JUMPDEST DUP2 JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xEDA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0x10EA JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0x1102 JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0x110E JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0x111D JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP INVALID SLOAD PUSH19 0x616E7366657248656C7065723A3A7472616E73 PUSH7 0x657246726F6D3A KECCAK256 PUSH21 0x72616E7366657246726F6D206661696C65644D6172 PC DIFFICULTY GASLIMIT PC JUMP ORIGIN 0x4C PUSH10 0x62726172793A20494445 0x4E SLOAD 0x49 NUMBER COINBASE 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 SLOAD PUSH19 0x616E7366657248656C7065723A3A7361666541 PUSH17 0x70726F76653A20617070726F7665206661 PUSH10 0x6C65644578616D706C65 MSTORE8 PUSH24 0x6170546F50726963653A205A45524F5F414D4F554E545F49 0x4E LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2A SDIV 0x4C SLOAD LT INVALID LOG4 0xD8 CALLER SAR 0x5E 0xA9 BALANCE PUSH1 0xD2 0x2C PUSH28 0xB887A481DCCBF5CE5E5011CA86329164736F6C634300060600330000 ",
          "sourceMap": "463:2414:12:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;463:2414:12;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;1017:1858:12;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;1017:1858:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;578:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;530:42;;;:::i;1017:1858::-;1372:20;;;;;:44;;-1:-1:-1;1396:20:12;;;1372:44;1364:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1569:19;;;;:42;;-1:-1:-1;1592:19:12;;;1569:42;1561:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1657:9;1676:16;1717;1735;1755:53;1784:7;1793:6;1801;1755:28;:53::i;:::-;1716:92;;;;1841:158;1917:15;1934;1967:8;1977;1841:58;:158::i;:::-;1822:177;;-1:-1:-1;1822:177:12;-1:-1:-1;;;2028:12:12;2020:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:16;2162:4;:38;;2186:14;2162:38;;;2169:14;2162:38;2143:57;;2225:8;2214;:19;2210:69;;;2260:8;2249:19;;2210:69;2289:15;2307:4;:22;;2323:6;2307:22;;;2314:6;2307:22;2289:40;;2339:16;2358:4;:22;;2374:6;2358:22;;;2365:6;2358:22;2339:41;;2390:77;2422:7;2431:10;2451:4;2458:8;2390:31;:77::i;:::-;2477:62;2504:7;2521:6;2530:8;2477:26;:62::i;:::-;2574:16;;;2588:1;2574:16;;;2550:21;2574:16;;;;;2550:21;2574:16;;;;;109:14:-1;2574:16:12;88:42:-1;144:17;;-1:-1;2574:16:12;2550:40;;2610:7;2600:4;2605:1;2600:7;;;;;;;;;;;;;:17;;;;;;;;;;;2637:8;2627:4;2632:1;2627:7;;;;;;;;;;;;;:18;;;;;;;;;;;2656:6;:31;;;2701:8;2723:1;2816:4;2834:2;2850:8;2656:212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2656:212:12;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2656:212:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2656:212:12;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2656:212:12;80:15:-1;;;97:9;76:31;65:43;;120:4;113:20;15:2;7:11;;4:2;;;31:1;28;21:12;4:2;2656:212:12;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;2656:212:12;;421:4:-1;412:14;;;;2656:212:12;;;;;412:14:-1;2656:212:12;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2656:212:12;;;;;;;;;;;;1017:1858;;;;;;;;;;;;;;:::o;578:32::-;;;:::o;530:42::-;;;:::o;1250:387:17:-;1343:13;1358;1384:14;1403:26;1414:6;1422;1403:10;:26::i;:::-;1383:46;;;1440:13;1455;1488:32;1496:7;1505:6;1513;1488:7;:32::i;:::-;1473:60;;;:62;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1473:62:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1473:62:17;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1473:62:17;;;;;;;1439:96;;;;;-1:-1:-1;1439:96:17;;-1:-1:-1;1568:16:17;;;;;;;;:62;;1611:8;1621;1568:62;;;1588:8;1598;1568:62;1545:85;;;;-1:-1:-1;1250:387:17;-1:-1:-1;;;;;;;1250:387:17:o;680:903:18:-;865:9;876:16;966:15;911:52;927:8;937:15;954:8;911:15;:52::i;:::-;:70;;-1:-1:-1;992:17:18;1012:22;:8;1025;1012:22;:12;:22;:::i;:::-;992:42;-1:-1:-1;1045:16:18;1064:232;1093:193;1126:19;992:42;1140:4;1126:19;:13;:19;:::i;:::-;1163:4;:40;;1188:15;1163:40;;;1170:15;1163:40;1221:51;1268:3;1222:4;:40;;1247:15;1222:40;;;1229:15;1222:40;1221:46;:51;:46;:51;:::i;:::-;1093:15;:193::i;:::-;1064:15;:232::i;:::-;1045:251;;1306:17;1377:3;1327:4;:46;;1355:18;:8;1368:4;1355:18;:12;:18;:::i;:::-;1327:46;;;1334:18;:8;1347:4;1334:18;:12;:18;:::i;:::-;1326:54;;;;;;1306:74;;1406:9;1395:8;:20;1391:43;;;-1:-1:-1;1425:5:18;;-1:-1:-1;1425:5:18;;-1:-1:-1;1417:17:18;;-1:-1:-1;;1417:17:18;1391:43;1553:23;:8;1566:9;1553:23;:12;:23;:::i;:::-;1542:34;;680:903;;;;;;;;;;;:::o;1096:486:4:-;1360:51;;;1349:10;1360:51;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1360:51:4;;;;;;;25:18:-1;;61:17;;96:58;182:15;1360:51:4;179:29:-1;160:49;;1349:63:4;;;;1314:12;;1328:17;;1349:10;;;;1360:51;1349:63;;;25:18:-1;1349:63:4;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;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;;;1349:63:4;;;;;;;;;;;;;;;;;;;;;;;;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;;1313:99:4;;;;1443:7;:57;;;;-1:-1:-1;1455:11:4;;:16;;:44;;;1486:4;1475:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1475:24:4;1455:44;1422:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1096:486;;;;;;:::o;212:434::-;436:45;;;425:10;436:45;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;436:45:4;;;;;;;25:18:-1;;61:17;;96:58;182:15;436:45:4;179:29:-1;160:49;;425:57:4;;;;390:12;;404:17;;425:10;;;;436:45;425:57;;;25:18:-1;425:57:4;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;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:4;;;;;;;;;;;;;;;;;;;;;;;;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:4;;;;513:7;:57;;;;-1:-1:-1;525:11:4;;: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:4;525:44;492:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;212:434;;;;;:::o;291:345:17:-;366:14;382;426:6;416:16;;:6;:16;;;;408:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:6;503:15;;:6;:15;;;:53;;541:6;549;503:53;;;522:6;530;503:53;484:72;;-1:-1:-1;484:72:17;-1:-1:-1;574:20:17;;;566:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:345;;;;;:::o;725:470::-;814:12;839:14;855;873:26;884:6;892;873:10;:26::i;:::-;1033:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1033:32:17;;;;;1023:43;;;;;;939:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;939:246:17;;;;;;;929:257;;;;;;;;;725:470;-1:-1:-1;;;;;725:470:17:o;897:373:3:-;999:7;1019:9;1030;1043:13;1051:1;1054;1043:7;:13::i;:::-;1018:38;;;;1067:10;1093:1;1080:15;;;;;1090:1;1087;1080:15;1067:28;;1114:1;1109:2;:6;1105:18;;;1122:1;1117:6;;;;1105:18;1133:7;;;;;1155:6;1151:24;;1174:1;1170;:5;;;;;;1163:12;;;;;;;1151:24;1198:1;1194;:5;1186:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:16;1255:1;1258;1261;1247:7;:16::i;:::-;1240:23;;;;;897:373;;;;;;:::o;419:140:20:-;471:6;497;;;:30;;-1:-1:-1;;512:5:20;;;526:1;521;512:5;521:1;507:15;;;;;:20;497:30;489:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;419:140;;;;:::o;382:1197:0:-;430:7;453:6;449:20;;-1:-1:-1;468:1:0;461:8;;449:20;644:1;667;688:35;682:41;;678:104;;746:3;739:10;;;;;769:2;763:8;678:104;801:19;795:2;:25;791:87;;843:2;836:9;;;;;865:2;859:8;791:87;897:11;891:2;:17;887:79;;931:2;924:9;;;;;953:2;947:8;887:79;985:7;979:2;:13;975:74;;1015:2;1008:9;;;;;1037:1;1031:7;975:74;1068:5;1062:2;:11;1058:71;;1096:1;1089:8;;;;;1117:1;1111:7;1058:71;1148:4;1142:2;:10;1138:70;;1175:1;1168:8;;;;;1196:1;1190:7;1138:70;1227:3;1221:2;:9;1217:47;;1252:1;1246:7;1217:47;1292:1;1286;1282;:5;;;;;;1278:1;:9;1277:16;;1273:20;;1322:1;1316;1312;:5;;;;;;1308:1;:9;1307:16;;1303:20;;1352:1;1346;1342;:5;;;;;;1338:1;:9;1337:16;;1333:20;;1382:1;1376;1372;:5;;;;;;1368:1;:9;1367:16;;1363:20;;1412:1;1406;1402;:5;;;;;;1398:1;:9;1397:16;;1393:20;;1442:1;1436;1432;:5;;;;;;1428:1;:9;1427:16;;1423:20;;1472:1;1466;1462;:5;;;;;;1458:1;:9;1457:16;;1453:20;;1520:10;1537:1;1533;:5;;;;;;1520:18;;1560:2;1556:1;:6;:15;;1569:2;1556:15;;;1565:1;1556:15;1548:24;;;;;382:1197;;;;:::o;286:127:20:-;369:5;;;364:16;;;;356:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;216:206:3;278:9;;;344:2;333:1;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o;428:463::-;530:7;568:2;;;564:6;;;569:1;564:6;580:9;;;;;;;604:4;599:9;;;;;;;;;638:4;630;629:5;;628:14;;;;;685:1;:9;;;713:5;;;709:9;;704:14;737:5;;;733:9;;728:14;761:5;;;757:9;;752:14;785:5;;;781:9;;776:14;809:5;;;805:9;;800:14;833:5;;;829:9;;824:14;857:5;;;853:9;;848:14;;;628;;645:1;628:18;623:24;;;;618:29;;;;879:5;;428:463;-1:-1:-1;;428:463:3:o"
        }
      },
      "interface": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "factory_",
              "type": "address"
            },
            {
              "internalType": "contract IMarXDEXV2Router01",
              "name": "router_",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "router",
          "outputs": [
            {
              "internalType": "contract IMarXDEXV2Router01",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "truePriceTokenB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxSpendTokenA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxSpendTokenB",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapToPrice",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "60c060405234801561001057600080fd5b506040516112c83803806112c88339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b811660a052911b1660805260805160601c60a05160601c61123b61008d600039806101df52806105905250806102c3528061039a52806105b4525061123b6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063bef90fd314610046578063c45a0155146100aa578063f887ea40146100db575b600080fd5b6100a8600480360361010081101561005d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e001356100e3565b005b6100b261058e565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b26105b2565b85158015906100f157508415155b61015c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4578616d706c6553776170546f50726963653a205a45524f5f50524943450000604482015290519081900360640190fd5b8315158061016957508215155b6101d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4578616d706c6553776170546f50726963653a205a45524f5f5350454e440000604482015290519081900360640190fd5b6000806000806102057f00000000000000000000000000000000000000000000000000000000000000008d8d6105d6565b915091506102158a8a84846106be565b9094509250505080610272576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111e46022913960400191505060405180910390fd5b60008261027f5785610281565b865b90508082111561028f578091505b60008361029c578a61029e565b8b5b90506000846102ad578c6102af565b8b5b90506102bd823330876107aa565b6102e8827f00000000000000000000000000000000000000000000000000000000000000008661097a565b6040805160028082526060808301845292602083019080368337019050509050828160008151811061031657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061035e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed1739866000848c8c6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561046d578181015183820152602001610455565b505050509050019650505050505050600060405180830381600087803b15801561049657600080fd5b505af11580156104aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156104f157600080fd5b810190808051604051939291908464010000000082111561051157600080fd5b90830190602082018581111561052657600080fd5b825186602082028301116401000000008211171561054357600080fd5b82525081516020918201928201910280838360005b83811015610570578181015183820152602001610558565b50505050905001604052505050505050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060006105e58585610b41565b5090506000806105f6888888610c94565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561063b57600080fd5b505afa15801561064f573d6000803e3d6000fd5b505050506040513d606081101561066557600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146106ac5780826106af565b81815b90999098509650505050505050565b600080856106cd858786610d7f565b10915060006106e2858563ffffffff610e5416565b9050600061073461072f6106fe846103e863ffffffff610e5416565b86610709578961070b565b8a5b61072a6103e58961071c578d61071e565b8c5b9063ffffffff610e5416565b610d7f565b610ee0565b905060006103e58561075757610752876103e863ffffffff610e5416565b610769565b610769886103e863ffffffff610e5416565b8161077057fe5b0490508082101561078b5750600093508392506107a1915050565b61079b828263ffffffff61103516565b93505050505b94509492505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061088857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161084b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146108ea576040519150601f19603f3d011682016040523d82523d6000602084013e6108ef565b606091505b509150915081801561091d57508051158061091d575080806020019051602081101561091a57600080fd5b50515b610972576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806111636031913960400191505060405180910390fd5b505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310610a5057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a13565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ab2576040519150601f19603f3d011682016040523d82523d6000602084013e610ab7565b606091505b5091509150818015610ae5575080511580610ae55750808060200190516020811015610ae257600080fd5b50515b610b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806111b9602b913960400191505060405180910390fd5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806111946025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610c03578284610c06565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610c8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000806000610ca38585610b41565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000806000610d8e86866110a7565b9150915060008480610d9c57fe5b868809905082811115610db0576001820391505b918290039181610dce57848381610dc357fe5b049350505050610e4d565b848210610e3c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610e478383876110f2565b93505050505b9392505050565b6000811580610e6f57505080820282828281610e6c57fe5b04145b610eda57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b600081610eef57506000611030565b8160017001000000000000000000000000000000008210610f155760809190911c9060401b5b680100000000000000008210610f305760409190911c9060201b5b6401000000008210610f475760209190911c9060101b5b620100008210610f5c5760109190911c9060081b5b6101008210610f705760089190911c9060041b5b60108210610f835760049190911c9060021b5b60088210610f8f5760011b5b6001818581610f9a57fe5b048201901c90506001818581610fac57fe5b048201901c90506001818581610fbe57fe5b048201901c90506001818581610fd057fe5b048201901c90506001818581610fe257fe5b048201901c90506001818581610ff457fe5b048201901c9050600181858161100657fe5b048201901c9050600081858161101857fe5b049050808210611028578061102a565b815b93505050505b919050565b80820382811115610eda57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609905083850292508281039150828110156110ea576001820391505b509250929050565b6000818103821680838161110257fe5b04925080858161110e57fe5b04945080816000038161111d57fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fe5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65644d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c65644578616d706c6553776170546f50726963653a205a45524f5f414d4f554e545f494ea26469706673582212202a054c5410fea4d8331d5ea93160d22c7bb887a481dccbf5ce5e5011ca86329164736f6c63430006060033",
      "bin": "60c060405234801561001057600080fd5b506040516112c83803806112c88339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b811660a052911b1660805260805160601c60a05160601c61123b61008d600039806101df52806105905250806102c3528061039a52806105b4525061123b6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063bef90fd314610046578063c45a0155146100aa578063f887ea40146100db575b600080fd5b6100a8600480360361010081101561005d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e001356100e3565b005b6100b261058e565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b26105b2565b85158015906100f157508415155b61015c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4578616d706c6553776170546f50726963653a205a45524f5f50524943450000604482015290519081900360640190fd5b8315158061016957508215155b6101d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4578616d706c6553776170546f50726963653a205a45524f5f5350454e440000604482015290519081900360640190fd5b6000806000806102057f00000000000000000000000000000000000000000000000000000000000000008d8d6105d6565b915091506102158a8a84846106be565b9094509250505080610272576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111e46022913960400191505060405180910390fd5b60008261027f5785610281565b865b90508082111561028f578091505b60008361029c578a61029e565b8b5b90506000846102ad578c6102af565b8b5b90506102bd823330876107aa565b6102e8827f00000000000000000000000000000000000000000000000000000000000000008661097a565b6040805160028082526060808301845292602083019080368337019050509050828160008151811061031657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061035e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed1739866000848c8c6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561046d578181015183820152602001610455565b505050509050019650505050505050600060405180830381600087803b15801561049657600080fd5b505af11580156104aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156104f157600080fd5b810190808051604051939291908464010000000082111561051157600080fd5b90830190602082018581111561052657600080fd5b825186602082028301116401000000008211171561054357600080fd5b82525081516020918201928201910280838360005b83811015610570578181015183820152602001610558565b50505050905001604052505050505050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060006105e58585610b41565b5090506000806105f6888888610c94565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561063b57600080fd5b505afa15801561064f573d6000803e3d6000fd5b505050506040513d606081101561066557600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146106ac5780826106af565b81815b90999098509650505050505050565b600080856106cd858786610d7f565b10915060006106e2858563ffffffff610e5416565b9050600061073461072f6106fe846103e863ffffffff610e5416565b86610709578961070b565b8a5b61072a6103e58961071c578d61071e565b8c5b9063ffffffff610e5416565b610d7f565b610ee0565b905060006103e58561075757610752876103e863ffffffff610e5416565b610769565b610769886103e863ffffffff610e5416565b8161077057fe5b0490508082101561078b5750600093508392506107a1915050565b61079b828263ffffffff61103516565b93505050505b94509492505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061088857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161084b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146108ea576040519150601f19603f3d011682016040523d82523d6000602084013e6108ef565b606091505b509150915081801561091d57508051158061091d575080806020019051602081101561091a57600080fd5b50515b610972576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806111636031913960400191505060405180910390fd5b505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310610a5057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a13565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ab2576040519150601f19603f3d011682016040523d82523d6000602084013e610ab7565b606091505b5091509150818015610ae5575080511580610ae55750808060200190516020811015610ae257600080fd5b50515b610b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806111b9602b913960400191505060405180910390fd5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806111946025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610c03578284610c06565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610c8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000806000610ca38585610b41565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000806000610d8e86866110a7565b9150915060008480610d9c57fe5b868809905082811115610db0576001820391505b918290039181610dce57848381610dc357fe5b049350505050610e4d565b848210610e3c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610e478383876110f2565b93505050505b9392505050565b6000811580610e6f57505080820282828281610e6c57fe5b04145b610eda57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b600081610eef57506000611030565b8160017001000000000000000000000000000000008210610f155760809190911c9060401b5b680100000000000000008210610f305760409190911c9060201b5b6401000000008210610f475760209190911c9060101b5b620100008210610f5c5760109190911c9060081b5b6101008210610f705760089190911c9060041b5b60108210610f835760049190911c9060021b5b60088210610f8f5760011b5b6001818581610f9a57fe5b048201901c90506001818581610fac57fe5b048201901c90506001818581610fbe57fe5b048201901c90506001818581610fd057fe5b048201901c90506001818581610fe257fe5b048201901c90506001818581610ff457fe5b048201901c9050600181858161100657fe5b048201901c9050600081858161101857fe5b049050808210611028578061102a565b815b93505050505b919050565b80820382811115610eda57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609905083850292508281039150828110156110ea576001820391505b509250929050565b6000818103821680838161110257fe5b04925080858161110e57fe5b04945080816000038161111d57fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fe5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65644d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c65644578616d706c6553776170546f50726963653a205a45524f5f414d4f554e545f494ea26469706673582212202a054c5410fea4d8331d5ea93160d22c7bb887a481dccbf5ce5e5011ca86329164736f6c63430006060033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100415760003560e01c8063bef90fd314610046578063c45a0155146100aa578063f887ea40146100db575b600080fd5b6100a8600480360361010081101561005d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e001356100e3565b005b6100b261058e565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b26105b2565b85158015906100f157508415155b61015c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4578616d706c6553776170546f50726963653a205a45524f5f50524943450000604482015290519081900360640190fd5b8315158061016957508215155b6101d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4578616d706c6553776170546f50726963653a205a45524f5f5350454e440000604482015290519081900360640190fd5b6000806000806102057f00000000000000000000000000000000000000000000000000000000000000008d8d6105d6565b915091506102158a8a84846106be565b9094509250505080610272576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806111e46022913960400191505060405180910390fd5b60008261027f5785610281565b865b90508082111561028f578091505b60008361029c578a61029e565b8b5b90506000846102ad578c6102af565b8b5b90506102bd823330876107aa565b6102e8827f00000000000000000000000000000000000000000000000000000000000000008661097a565b6040805160028082526060808301845292602083019080368337019050509050828160008151811061031657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061035e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166338ed1739866000848c8c6040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561046d578181015183820152602001610455565b505050509050019650505050505050600060405180830381600087803b15801561049657600080fd5b505af11580156104aa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156104f157600080fd5b810190808051604051939291908464010000000082111561051157600080fd5b90830190602082018581111561052657600080fd5b825186602082028301116401000000008211171561054357600080fd5b82525081516020918201928201910280838360005b83811015610570578181015183820152602001610558565b50505050905001604052505050505050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060006105e58585610b41565b5090506000806105f6888888610c94565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561063b57600080fd5b505afa15801561064f573d6000803e3d6000fd5b505050506040513d606081101561066557600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146106ac5780826106af565b81815b90999098509650505050505050565b600080856106cd858786610d7f565b10915060006106e2858563ffffffff610e5416565b9050600061073461072f6106fe846103e863ffffffff610e5416565b86610709578961070b565b8a5b61072a6103e58961071c578d61071e565b8c5b9063ffffffff610e5416565b610d7f565b610ee0565b905060006103e58561075757610752876103e863ffffffff610e5416565b610769565b610769886103e863ffffffff610e5416565b8161077057fe5b0490508082101561078b5750600093508392506107a1915050565b61079b828263ffffffff61103516565b93505050505b94509492505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061088857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161084b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146108ea576040519150601f19603f3d011682016040523d82523d6000602084013e6108ef565b606091505b509150915081801561091d57508051158061091d575080806020019051602081101561091a57600080fd5b50515b610972576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806111636031913960400191505060405180910390fd5b505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310610a5057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a13565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ab2576040519150601f19603f3d011682016040523d82523d6000602084013e610ab7565b606091505b5091509150818015610ae5575080511580610ae55750808060200190516020811015610ae257600080fd5b50515b610b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806111b9602b913960400191505060405180910390fd5b5050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610bc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806111946025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610c03578284610c06565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216610c8d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4d61725844455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b6000806000610ca38585610b41565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000806000610d8e86866110a7565b9150915060008480610d9c57fe5b868809905082811115610db0576001820391505b918290039181610dce57848381610dc357fe5b049350505050610e4d565b848210610e3c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610e478383876110f2565b93505050505b9392505050565b6000811580610e6f57505080820282828281610e6c57fe5b04145b610eda57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b600081610eef57506000611030565b8160017001000000000000000000000000000000008210610f155760809190911c9060401b5b680100000000000000008210610f305760409190911c9060201b5b6401000000008210610f475760209190911c9060101b5b620100008210610f5c5760109190911c9060081b5b6101008210610f705760089190911c9060041b5b60108210610f835760049190911c9060021b5b60088210610f8f5760011b5b6001818581610f9a57fe5b048201901c90506001818581610fac57fe5b048201901c90506001818581610fbe57fe5b048201901c90506001818581610fd057fe5b048201901c90506001818581610fe257fe5b048201901c90506001818581610ff457fe5b048201901c9050600181858161100657fe5b048201901c9050600081858161101857fe5b049050808210611028578061102a565b815b93505050505b919050565b80820382811115610eda57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609905083850292508281039150828110156110ea576001820391505b509250929050565b6000818103821680838161110257fe5b04925080858161110e57fe5b04945080816000038161111d57fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fe5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65644d61725844455856324c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c65644578616d706c6553776170546f50726963653a205a45524f5f414d4f554e545f494ea26469706673582212202a054c5410fea4d8331d5ea93160d22c7bb887a481dccbf5ce5e5011ca86329164736f6c63430006060033",
      "srcmap": "463:2414:12:-:0;;;617:126;5:9:-1;2:2;;;27:1;24;17:12;2:2;617:126:12;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;617:126:12;;;;;;;-1:-1:-1;;;;;;692:18:12;;;;;;;;720:16;;;;;463:2414;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "463:2414:12:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;463:2414:12;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;1017:1858:12;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;1017:1858:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;578:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;530:42;;;:::i;1017:1858::-;1372:20;;;;;:44;;-1:-1:-1;1396:20:12;;;1372:44;1364:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1569:19;;;;:42;;-1:-1:-1;1592:19:12;;;1569:42;1561:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1657:9;1676:16;1717;1735;1755:53;1784:7;1793:6;1801;1755:28;:53::i;:::-;1716:92;;;;1841:158;1917:15;1934;1967:8;1977;1841:58;:158::i;:::-;1822:177;;-1:-1:-1;1822:177:12;-1:-1:-1;;;2028:12:12;2020:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:16;2162:4;:38;;2186:14;2162:38;;;2169:14;2162:38;2143:57;;2225:8;2214;:19;2210:69;;;2260:8;2249:19;;2210:69;2289:15;2307:4;:22;;2323:6;2307:22;;;2314:6;2307:22;2289:40;;2339:16;2358:4;:22;;2374:6;2358:22;;;2365:6;2358:22;2339:41;;2390:77;2422:7;2431:10;2451:4;2458:8;2390:31;:77::i;:::-;2477:62;2504:7;2521:6;2530:8;2477:26;:62::i;:::-;2574:16;;;2588:1;2574:16;;;2550:21;2574:16;;;;;2550:21;2574:16;;;;;109:14:-1;2574:16:12;88:42:-1;144:17;;-1:-1;2574:16:12;2550:40;;2610:7;2600:4;2605:1;2600:7;;;;;;;;;;;;;:17;;;;;;;;;;;2637:8;2627:4;2632:1;2627:7;;;;;;;;;;;;;:18;;;;;;;;;;;2656:6;:31;;;2701:8;2723:1;2816:4;2834:2;2850:8;2656:212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2656:212:12;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2656:212:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2656:212:12;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2656:212:12;80:15:-1;;;97:9;76:31;65:43;;120:4;113:20;15:2;7:11;;4:2;;;31:1;28;21:12;4:2;2656:212:12;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;2656:212:12;;421:4:-1;412:14;;;;2656:212:12;;;;;412:14:-1;2656:212:12;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2656:212:12;;;;;;;;;;;;1017:1858;;;;;;;;;;;;;;:::o;578:32::-;;;:::o;530:42::-;;;:::o;1250:387:17:-;1343:13;1358;1384:14;1403:26;1414:6;1422;1403:10;:26::i;:::-;1383:46;;;1440:13;1455;1488:32;1496:7;1505:6;1513;1488:7;:32::i;:::-;1473:60;;;:62;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1473:62:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1473:62:17;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1473:62:17;;;;;;;1439:96;;;;;-1:-1:-1;1439:96:17;;-1:-1:-1;1568:16:17;;;;;;;;:62;;1611:8;1621;1568:62;;;1588:8;1598;1568:62;1545:85;;;;-1:-1:-1;1250:387:17;-1:-1:-1;;;;;;;1250:387:17:o;680:903:18:-;865:9;876:16;966:15;911:52;927:8;937:15;954:8;911:15;:52::i;:::-;:70;;-1:-1:-1;992:17:18;1012:22;:8;1025;1012:22;:12;:22;:::i;:::-;992:42;-1:-1:-1;1045:16:18;1064:232;1093:193;1126:19;992:42;1140:4;1126:19;:13;:19;:::i;:::-;1163:4;:40;;1188:15;1163:40;;;1170:15;1163:40;1221:51;1268:3;1222:4;:40;;1247:15;1222:40;;;1229:15;1222:40;1221:46;:51;:46;:51;:::i;:::-;1093:15;:193::i;:::-;1064:15;:232::i;:::-;1045:251;;1306:17;1377:3;1327:4;:46;;1355:18;:8;1368:4;1355:18;:12;:18;:::i;:::-;1327:46;;;1334:18;:8;1347:4;1334:18;:12;:18;:::i;:::-;1326:54;;;;;;1306:74;;1406:9;1395:8;:20;1391:43;;;-1:-1:-1;1425:5:18;;-1:-1:-1;1425:5:18;;-1:-1:-1;1417:17:18;;-1:-1:-1;;1417:17:18;1391:43;1553:23;:8;1566:9;1553:23;:12;:23;:::i;:::-;1542:34;;680:903;;;;;;;;;;;:::o;1096:486:4:-;1360:51;;;1349:10;1360:51;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1360:51:4;;;;;;;25:18:-1;;61:17;;96:58;182:15;1360:51:4;179:29:-1;160:49;;1349:63:4;;;;1314:12;;1328:17;;1349:10;;;;1360:51;1349:63;;;25:18:-1;1349:63:4;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;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;;;1349:63:4;;;;;;;;;;;;;;;;;;;;;;;;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;;1313:99:4;;;;1443:7;:57;;;;-1:-1:-1;1455:11:4;;:16;;:44;;;1486:4;1475:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1475:24:4;1455:44;1422:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1096:486;;;;;;:::o;212:434::-;436:45;;;425:10;436:45;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;436:45:4;;;;;;;25:18:-1;;61:17;;96:58;182:15;436:45:4;179:29:-1;160:49;;425:57:4;;;;390:12;;404:17;;425:10;;;;436:45;425:57;;;25:18:-1;425:57:4;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;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:4;;;;;;;;;;;;;;;;;;;;;;;;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:4;;;;513:7;:57;;;;-1:-1:-1;525:11:4;;: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:4;525:44;492:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;212:434;;;;;:::o;291:345:17:-;366:14;382;426:6;416:16;;:6;:16;;;;408:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:6;503:15;;:6;:15;;;:53;;541:6;549;503:53;;;522:6;530;503:53;484:72;;-1:-1:-1;484:72:17;-1:-1:-1;574:20:17;;;566:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;291:345;;;;;:::o;725:470::-;814:12;839:14;855;873:26;884:6;892;873:10;:26::i;:::-;1033:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1033:32:17;;;;;1023:43;;;;;;939:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;939:246:17;;;;;;;929:257;;;;;;;;;725:470;-1:-1:-1;;;;;725:470:17:o;897:373:3:-;999:7;1019:9;1030;1043:13;1051:1;1054;1043:7;:13::i;:::-;1018:38;;;;1067:10;1093:1;1080:15;;;;;1090:1;1087;1080:15;1067:28;;1114:1;1109:2;:6;1105:18;;;1122:1;1117:6;;;;1105:18;1133:7;;;;;1155:6;1151:24;;1174:1;1170;:5;;;;;;1163:12;;;;;;;1151:24;1198:1;1194;:5;1186:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:16;1255:1;1258;1261;1247:7;:16::i;:::-;1240:23;;;;;897:373;;;;;;:::o;419:140:20:-;471:6;497;;;:30;;-1:-1:-1;;512:5:20;;;526:1;521;512:5;521:1;507:15;;;;;:20;497:30;489:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;419:140;;;;:::o;382:1197:0:-;430:7;453:6;449:20;;-1:-1:-1;468:1:0;461:8;;449:20;644:1;667;688:35;682:41;;678:104;;746:3;739:10;;;;;769:2;763:8;678:104;801:19;795:2;:25;791:87;;843:2;836:9;;;;;865:2;859:8;791:87;897:11;891:2;:17;887:79;;931:2;924:9;;;;;953:2;947:8;887:79;985:7;979:2;:13;975:74;;1015:2;1008:9;;;;;1037:1;1031:7;975:74;1068:5;1062:2;:11;1058:71;;1096:1;1089:8;;;;;1117:1;1111:7;1058:71;1148:4;1142:2;:10;1138:70;;1175:1;1168:8;;;;;1196:1;1190:7;1138:70;1227:3;1221:2;:9;1217:47;;1252:1;1246:7;1217:47;1292:1;1286;1282;:5;;;;;;1278:1;:9;1277:16;;1273:20;;1322:1;1316;1312;:5;;;;;;1308:1;:9;1307:16;;1303:20;;1352:1;1346;1342;:5;;;;;;1338:1;:9;1337:16;;1333:20;;1382:1;1376;1372;:5;;;;;;1368:1;:9;1367:16;;1363:20;;1412:1;1406;1402;:5;;;;;;1398:1;:9;1397:16;;1393:20;;1442:1;1436;1432;:5;;;;;;1428:1;:9;1427:16;;1423:20;;1472:1;1466;1462;:5;;;;;;1458:1;:9;1457:16;;1453:20;;1520:10;1537:1;1533;:5;;;;;;1520:18;;1560:2;1556:1;:6;:15;;1569:2;1556:15;;;1565:1;1556:15;1548:24;;;;;382:1197;;;;:::o;286:127:20:-;369:5;;;364:16;;;;356:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;216:206:3;278:9;;;344:2;333:1;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o;428:463::-;530:7;568:2;;;564:6;;;569:1;564:6;580:9;;;;;;;604:4;599:9;;;;;;;;;638:4;630;629:5;;628:14;;;;;685:1;:9;;;713:5;;;709:9;;704:14;737:5;;;733:9;;728:14;761:5;;;757:9;;752:14;785:5;;;781:9;;776:14;809:5;;;805:9;;800:14;833:5;;;829:9;;824:14;857:5;;;853:9;;848:14;;;628;;645:1;628:18;623:24;;;;618:29;;;;879:5;;428:463;-1:-1:-1;;428:463:3:o"
    },
    "contracts/interfaces/IERC20.sol:IERC20": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IMarXDEXV2Router01.sol:IMarXDEXV2Router01": {
      "abi": [
        {
          "inputs": [],
          "name": "WETH",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountADesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenDesired",
              "type": "uint256"
            },
            {
              "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": "addLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountIn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountOut",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsIn",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsOut",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveB",
              "type": "uint256"
            }
          ],
          "name": "quote",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "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": "removeLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapETHForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "interface": [
        {
          "inputs": [],
          "name": "WETH",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountADesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenDesired",
              "type": "uint256"
            },
            {
              "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": "addLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountIn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountOut",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsIn",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsOut",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveB",
              "type": "uint256"
            }
          ],
          "name": "quote",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "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": "removeLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapETHForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IMarXDEXV2Router02.sol:IMarXDEXV2Router02": {
      "abi": [
        {
          "inputs": [],
          "name": "WETH",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountADesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenDesired",
              "type": "uint256"
            },
            {
              "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": "addLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountIn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountOut",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsIn",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsOut",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveB",
              "type": "uint256"
            }
          ],
          "name": "quote",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "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": "removeLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "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": "removeLiquidityETHSupportingFeeOnTransferTokens",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapETHForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokensSupportingFeeOnTransferTokens",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETHSupportingFeeOnTransferTokens",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "interface": [
        {
          "inputs": [],
          "name": "WETH",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountADesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenDesired",
              "type": "uint256"
            },
            {
              "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": "addLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountIn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountOut",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsIn",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "getAmountsOut",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveB",
              "type": "uint256"
            }
          ],
          "name": "quote",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "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": "removeLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "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": "removeLiquidityETHSupportingFeeOnTransferTokens",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapETHForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokensSupportingFeeOnTransferTokens",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETHSupportingFeeOnTransferTokens",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IWETH.sol:IWETH": {
      "abi": [
        {
          "inputs": [],
          "name": "deposit",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "interface": [
        {
          "inputs": [],
          "name": "deposit",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/libraries/MarXDEXV2Library.sol:MarXDEXV2Library": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122021512cc6d8640b1fb55a3e2ee1f54003ffd353ebe348f4afb116fdea4fd1bdd964736f6c63430006060033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x21 MLOAD 0x2C 0xC6 0xD8 PUSH5 0xB1FB55A3E 0x2E 0xE1 CREATE2 BLOCKHASH SUB SELFDESTRUCT 0xD3 MSTORE8 0xEB 0xE3 0x48 DELEGATECALL 0xAF 0xB1 AND REVERT 0xEA 0x4F 0xD1 0xBD 0xD9 PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "130:4333:17:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122021512cc6d8640b1fb55a3e2ee1f54003ffd353ebe348f4afb116fdea4fd1bdd964736f6c63430006060033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x21 MLOAD 0x2C 0xC6 0xD8 PUSH5 0xB1FB55A3E 0x2E 0xE1 CREATE2 BLOCKHASH SUB SELFDESTRUCT 0xD3 MSTORE8 0xEB 0xE3 0x48 DELEGATECALL 0xAF 0xB1 AND REVERT 0xEA 0x4F 0xD1 0xBD 0xD9 PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "130:4333:17:-:0;;;;;;12:1:-1;9;2:12"
        }
      },
      "interface": [],
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122021512cc6d8640b1fb55a3e2ee1f54003ffd353ebe348f4afb116fdea4fd1bdd964736f6c63430006060033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122021512cc6d8640b1fb55a3e2ee1f54003ffd353ebe348f4afb116fdea4fd1bdd964736f6c63430006060033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122021512cc6d8640b1fb55a3e2ee1f54003ffd353ebe348f4afb116fdea4fd1bdd964736f6c63430006060033",
      "srcmap": "130:4333:17:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
      "srcmap-runtime": "130:4333:17:-:0;;;;;;12:1:-1;9;2:12"
    },
    "contracts/libraries/MarXDEXV2LiquidityMathLibrary.sol:MarXDEXV2LiquidityMathLibrary": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf15e77920322c6b4542f0ad433239e49994eef395c882c859190c438f8f818c64736f6c63430006060033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF ISZERO 0xE7 PUSH26 0x20322C6B4542F0AD433239E49994EEF395C882C859190C438F8F DUP2 DUP13 PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "528:5495:18:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf15e77920322c6b4542f0ad433239e49994eef395c882c859190c438f8f818c64736f6c63430006060033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF ISZERO 0xE7 PUSH26 0x20322C6B4542F0AD433239E49994EEF395C882C859190C438F8F DUP2 DUP13 PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "528:5495:18:-:0;;;;;;12:1:-1;9;2:12"
        }
      },
      "interface": [],
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf15e77920322c6b4542f0ad433239e49994eef395c882c859190c438f8f818c64736f6c63430006060033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf15e77920322c6b4542f0ad433239e49994eef395c882c859190c438f8f818c64736f6c63430006060033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf15e77920322c6b4542f0ad433239e49994eef395c882c859190c438f8f818c64736f6c63430006060033",
      "srcmap": "528:5495:18:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
      "srcmap-runtime": "528:5495:18:-:0;;;;;;12:1:-1;9;2:12"
    },
    "contracts/libraries/MarXDEXV2OracleLibrary.sol:MarXDEXV2OracleLibrary": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220786161de1f8aa08c9ba76a3e195bc2c2ac8b37bc3e028fd28e58df2607764f9564736f6c63430006060033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH25 0x6161DE1F8AA08C9BA76A3E195BC2C2AC8B37BC3E028FD28E58 0xDF 0x26 SMOD PUSH23 0x4F9564736F6C6343000606003300000000000000000000 ",
          "sourceMap": "264:1444:19:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220786161de1f8aa08c9ba76a3e195bc2c2ac8b37bc3e028fd28e58df2607764f9564736f6c63430006060033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH25 0x6161DE1F8AA08C9BA76A3E195BC2C2AC8B37BC3E028FD28E58 0xDF 0x26 SMOD PUSH23 0x4F9564736F6C6343000606003300000000000000000000 ",
          "sourceMap": "264:1444:19:-:0;;;;;;12:1:-1;9;2:12"
        }
      },
      "interface": [],
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220786161de1f8aa08c9ba76a3e195bc2c2ac8b37bc3e028fd28e58df2607764f9564736f6c63430006060033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220786161de1f8aa08c9ba76a3e195bc2c2ac8b37bc3e028fd28e58df2607764f9564736f6c63430006060033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220786161de1f8aa08c9ba76a3e195bc2c2ac8b37bc3e028fd28e58df2607764f9564736f6c63430006060033",
      "srcmap": "264:1444:19:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
      "srcmap-runtime": "264:1444:19:-:0;;;;;;12:1:-1;9;2:12"
    },
    "contracts/libraries/SafeMath.sol:SafeMath": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200141a6a9ec431c309d5f41ad6848fb2b74ac5e47da2eeeeedb121f12c63724b764736f6c63430006060033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD COINBASE 0xA6 0xA9 0xEC NUMBER SHR ADDRESS SWAP14 0x5F COINBASE 0xAD PUSH9 0x48FB2B74AC5E47DA2E 0xEE 0xEE 0xDB SLT 0x1F SLT 0xC6 CALLDATACOPY 0x24 0xB7 PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "131:430:20:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200141a6a9ec431c309d5f41ad6848fb2b74ac5e47da2eeeeedb121f12c63724b764736f6c63430006060033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD COINBASE 0xA6 0xA9 0xEC NUMBER SHR ADDRESS SWAP14 0x5F COINBASE 0xAD PUSH9 0x48FB2B74AC5E47DA2E 0xEE 0xEE 0xDB SLT 0x1F SLT 0xC6 CALLDATACOPY 0x24 0xB7 PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "131:430:20:-:0;;;;;;12:1:-1;9;2:12"
        }
      },
      "interface": [],
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200141a6a9ec431c309d5f41ad6848fb2b74ac5e47da2eeeeedb121f12c63724b764736f6c63430006060033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200141a6a9ec431c309d5f41ad6848fb2b74ac5e47da2eeeeedb121f12c63724b764736f6c63430006060033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200141a6a9ec431c309d5f41ad6848fb2b74ac5e47da2eeeeedb121f12c63724b764736f6c63430006060033",
      "srcmap": "131:430:20:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
      "srcmap-runtime": "131:430:20:-:0;;;;;;12:1:-1;9;2:12"
    },
    "contracts/test/DeflatingERC20.sol:DeflatingERC20": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_totalSupply",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50604051610e14380380610e148339818101604052602081101561003357600080fd5b50516040514690806052610dc28239604080519182900360520182208282018252601483527f4465666c6174696e67205465737420546f6b656e0000000000000000000000006020938401528151808301835260018152603160f81b908401528151808401919091527ff89e31130e6fd3d87d62a1ac2770fba58bed5a06c47ce70fa97f8218b1b2743a818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018590523060a0808301919091528251808303909101815260c090910190915280519101206003555061012633836001600160e01b0361012d16565b505061022d565b610146816000546101cf60201b610ade1790919060201c565b60009081556001600160a01b038316815260016020908152604090912054610177918390610ade6101cf821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b80820182811015610227576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b610b868061023c6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104b0565b61021b6104d4565b6040805160ff9092168252519081900360200190f35b6101b66104d9565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104df565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f1565b6100ec610503565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053c565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610549565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610815565b6040518060400160405280601481526020017f4465666c6174696e67205465737420546f6b656e00000000000000000000000081525081565b60006103c1338484610832565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461049b5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610469908363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a6848484610913565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020017f445454000000000000000000000000000000000000000000000000000000000081525081565b60006103c1338484610913565b428410156105b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610719573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061079457508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b61080a898989610832565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b606481046109218482610a19565b6000610933838363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001602052604090205490915061096c908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526001602052604080822093909355908616815220546109ae908263ffffffff610ade16565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526001602090815260409182902094909455805185815290519193928916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054610a4f908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554610a89908263ffffffff6108a116565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea26469706673582212202f0e78f9ad9dc52798d8a07955379a3b2a04dd368c019555a5d49d53fe65683264736f6c63430006060033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xE14 CODESIZE SUB DUP1 PUSH2 0xE14 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 MLOAD CHAINID SWAP1 DUP1 PUSH1 0x52 PUSH2 0xDC2 DUP3 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x52 ADD DUP3 KECCAK256 DUP3 DUP3 ADD DUP3 MSTORE PUSH1 0x14 DUP4 MSTORE PUSH32 0x4465666C6174696E67205465737420546F6B656E000000000000000000000000 PUSH1 0x20 SWAP4 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xF89E31130E6FD3D87D62A1AC2770FBA58BED5A06C47CE70FA97F8218B1B2743A DUP2 DUP4 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE POP PUSH2 0x126 CALLER DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x12D AND JUMP JUMPDEST POP POP PUSH2 0x22D JUMP JUMPDEST PUSH2 0x146 DUP2 PUSH1 0x0 SLOAD PUSH2 0x1CF PUSH1 0x20 SHL PUSH2 0xADE OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x177 SWAP2 DUP4 SWAP1 PUSH2 0xADE PUSH2 0x1CF DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x227 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB86 DUP1 PUSH2 0x23C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x2E0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x340 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x26C JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x213 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x3CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3D1 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x4B0 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x4D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4DF JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4F1 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x503 JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x53C JUMP JUMPDEST PUSH2 0x33E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x549 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x815 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4465666C6174696E67205465737420546F6B656E000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x832 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x49B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x469 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x4A6 DUP5 DUP5 DUP5 PUSH2 0x913 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4454540000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x913 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x5B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4558504952454400000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x719 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x794 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x7FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5349474E4154555245000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x80A DUP10 DUP10 DUP10 PUSH2 0x832 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x64 DUP2 DIV PUSH2 0x921 DUP5 DUP3 PUSH2 0xA19 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x933 DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x96C SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP7 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x9AE SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xADE AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP10 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA4F SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0xA89 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2F 0xE PUSH25 0xF9AD9DC52798D8A07955379A3B2A04DD368C019555A5D49D53 INVALID PUSH6 0x683264736F6C PUSH4 0x43000606 STOP CALLER GASLIMIT 0x49 POP CALLDATACOPY BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH20 0x7472696E672076657273696F6E2C75696E743235 CALLDATASIZE KECCAK256 PUSH4 0x6861696E 0x49 PUSH5 0x2C61646472 PUSH6 0x737320766572 PUSH10 0x6679696E67436F6E7472 PUSH2 0x6374 0x29 ",
          "sourceMap": "62:3507:21:-:0;;;864:504;5:9:-1;2:2;;;27:1;24;17:12;2:2;864:504:21;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;864:504:21;1066:95;;968:9;;1066:95;;;;;;;;;;;;;;;;1195:4;;;;;;;;;;;;;;1229:10;;;;;;;;;;-1:-1:-1;;;1229:10:21;;;;1038:272;;;;;;;;;1179:22;1038:272;;;;1219:21;1038:272;;;;;;;;;;1291:4;1038:272;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1038:272:21;;;;;;;1015:305;;;;;996:16;:324;-1:-1:-1;1330:31:21;1336:10;1348:12;-1:-1:-1;;;;;1330:5:21;:31;:::i;:::-;864:504;;62:3507;;1374:197;1446:22;1462:5;1446:11;;:15;;;;;;:22;;;;:::i;:::-;1432:11;:36;;;-1:-1:-1;;;;;1494:13:21;;;;:9;:13;;;;;;;;;:24;;1512:5;;1494:17;;;;;:24;;:::i;:::-;-1:-1:-1;;;;;1478:13:21;;;;;;:9;:13;;;;;;;;:40;;;;1533:31;;;;;;;1478:13;;;;1533:31;;;;;;;;;;1374:197;;:::o;154:126:20:-;237:5;;;232:16;;;;224:49;;;;;-1:-1:-1;;;224:49:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;154:126;;;;:::o;62:3507:21:-;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104b0565b61021b6104d4565b6040805160ff9092168252519081900360200190f35b6101b66104d9565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104df565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f1565b6100ec610503565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053c565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610549565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610815565b6040518060400160405280601481526020017f4465666c6174696e67205465737420546f6b656e00000000000000000000000081525081565b60006103c1338484610832565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461049b5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610469908363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a6848484610913565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020017f445454000000000000000000000000000000000000000000000000000000000081525081565b60006103c1338484610913565b428410156105b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610719573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061079457508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b61080a898989610832565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b606481046109218482610a19565b6000610933838363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001602052604090205490915061096c908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526001602052604080822093909355908616815220546109ae908263ffffffff610ade16565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526001602090815260409182902094909455805185815290519193928916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054610a4f908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554610a89908263ffffffff6108a116565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea26469706673582212202f0e78f9ad9dc52798d8a07955379a3b2a04dd368c019555a5d49d53fe65683264736f6c63430006060033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x2E0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x340 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x26C JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x213 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x3CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3D1 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x4B0 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x4D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4DF JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4F1 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x503 JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x53C JUMP JUMPDEST PUSH2 0x33E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x549 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x815 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4465666C6174696E67205465737420546F6B656E000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x832 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x49B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x469 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x4A6 DUP5 DUP5 DUP5 PUSH2 0x913 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4454540000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x913 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x5B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4558504952454400000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x719 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x794 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x7FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5349474E4154555245000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x80A DUP10 DUP10 DUP10 PUSH2 0x832 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x64 DUP2 DIV PUSH2 0x921 DUP5 DUP3 PUSH2 0xA19 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x933 DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x96C SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP7 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x9AE SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xADE AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP10 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA4F SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0xA89 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2F 0xE PUSH25 0xF9AD9DC52798D8A07955379A3B2A04DD368C019555A5D49D53 INVALID PUSH6 0x683264736F6C PUSH4 0x43000606 STOP CALLER ",
          "sourceMap": "62:3507:21:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;62:3507:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;122:52:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;122:52:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2334:144;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2334:144:21;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;264:24;;;:::i;:::-;;;;;;;;;;;;;;;;2626:295;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2626:295:21;;;;;;;;;;;;;;;;;;:::i;550:108::-;;;:::i;223:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;409:31;;;:::i;294:41::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;294:41:21;;;;:::i;664:38::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;664:38:21;;;;:::i;180:37::-;;;:::i;2484:136::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2484:136:21;;;;;;;;;:::i;2927:640::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;2927:640:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;341:61;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;341:61:21;;;;;;;;;;;:::i;122:52::-;;;;;;;;;;;;;;;;;;;:::o;2334:144::-;2398:4;2414:36;2423:10;2435:7;2444:5;2414:8;:36::i;:::-;-1:-1:-1;2467:4:21;2334:144;;;;;:::o;264:24::-;;;;:::o;2626:295::-;2724:15;;;2704:4;2724:15;;;:9;:15;;;;;;;;2740:10;2724:27;;;;;;;;2760:2;2724:39;2720:138;;2809:15;;;;;;;:9;:15;;;;;;;;2825:10;2809:27;;;;;;;;:38;;2841:5;2809:38;:31;:38;:::i;:::-;2779:15;;;;;;;:9;:15;;;;;;;;2795:10;2779:27;;;;;;;:68;2720:138;2867:26;2877:4;2883:2;2887:5;2867:9;:26::i;:::-;-1:-1:-1;2910:4:21;2626:295;;;;;:::o;550:108::-;592:66;550:108;:::o;223:35::-;256:2;223:35;:::o;409:31::-;;;;:::o;294:41::-;;;;;;;;;;;;;:::o;664:38::-;;;;;;;;;;;;;:::o;180:37::-;;;;;;;;;;;;;;;;;;;:::o;2484:136::-;2544:4;2560:32;2570:10;2582:2;2586:5;2560:9;:32::i;2927:640::-;3072:15;3060:8;:27;;3052:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3211:16;;3306:13;;;;3109:14;3306:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3255:77;;592:66;3255:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3255:77:21;;;;;3245:88;;;;;;3149:198;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3149:198:21;;;;;;3126:231;;;;;;;;;3394:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3109:14;;3306:15;3394:26;;;;;-1:-1:-1;3394:26:21;;;;;;;;;;3306:15;3394:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3394:26:21;;;;;;-1:-1:-1;;3438:30:21;;;;;;;:59;;;3492:5;3472:25;;:16;:25;;;3438:59;3430:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3529:31;3538:5;3545:7;3554:5;3529:8;:31::i;:::-;2927:640;;;;;;;;;:::o;341:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1788:166::-;1868:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;1916:31;;;;;;;;;;;;;;;;;1788:166;;;:::o;286:127:20:-;369:5;;;364:16;;;;356:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1960:368:21;2061:3;2053:11;;2074:23;2080:4;2053:11;2074:5;:23::i;:::-;2107:19;2129:21;:5;2139:10;2129:21;:9;:21;:::i;:::-;2178:15;;;;;;;:9;:15;;;;;;2107:43;;-1:-1:-1;2178:35:21;;2107:43;2178:35;:19;:35;:::i;:::-;2160:15;;;;;;;;:9;:15;;;;;;:53;;;;2239:13;;;;;;;:33;;2257:14;2239:33;:17;:33;:::i;:::-;2223:13;;;;;;;;:9;:13;;;;;;;;;:49;;;;2287:34;;;;;;;2223:13;;2287:34;;;;;;;;;;;;;1960:368;;;;;:::o;1577:205::-;1655:15;;;;;;;:9;:15;;;;;;:26;;1675:5;1655:26;:19;:26;:::i;:::-;1637:15;;;;;;;:9;:15;;;;;:44;;;;1705:11;:22;;1721:5;1705:22;:15;:22;:::i;:::-;1691:11;:36;;;1742:33;;;;;;;;;;;;;;;;;;;;;;1577:205;;:::o;154:126:20:-;237:5;;;232:16;;;;224:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
        }
      },
      "interface": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_totalSupply",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "608060405234801561001057600080fd5b50604051610e14380380610e148339818101604052602081101561003357600080fd5b50516040514690806052610dc28239604080519182900360520182208282018252601483527f4465666c6174696e67205465737420546f6b656e0000000000000000000000006020938401528151808301835260018152603160f81b908401528151808401919091527ff89e31130e6fd3d87d62a1ac2770fba58bed5a06c47ce70fa97f8218b1b2743a818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018590523060a0808301919091528251808303909101815260c090910190915280519101206003555061012633836001600160e01b0361012d16565b505061022d565b610146816000546101cf60201b610ade1790919060201c565b60009081556001600160a01b038316815260016020908152604090912054610177918390610ade6101cf821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b80820182811015610227576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b610b868061023c6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104b0565b61021b6104d4565b6040805160ff9092168252519081900360200190f35b6101b66104d9565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104df565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f1565b6100ec610503565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053c565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610549565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610815565b6040518060400160405280601481526020017f4465666c6174696e67205465737420546f6b656e00000000000000000000000081525081565b60006103c1338484610832565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461049b5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610469908363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a6848484610913565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020017f445454000000000000000000000000000000000000000000000000000000000081525081565b60006103c1338484610913565b428410156105b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610719573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061079457508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b61080a898989610832565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b606481046109218482610a19565b6000610933838363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001602052604090205490915061096c908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526001602052604080822093909355908616815220546109ae908263ffffffff610ade16565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526001602090815260409182902094909455805185815290519193928916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054610a4f908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554610a89908263ffffffff6108a116565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea26469706673582212202f0e78f9ad9dc52798d8a07955379a3b2a04dd368c019555a5d49d53fe65683264736f6c63430006060033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
      "bin": "608060405234801561001057600080fd5b50604051610e14380380610e148339818101604052602081101561003357600080fd5b50516040514690806052610dc28239604080519182900360520182208282018252601483527f4465666c6174696e67205465737420546f6b656e0000000000000000000000006020938401528151808301835260018152603160f81b908401528151808401919091527ff89e31130e6fd3d87d62a1ac2770fba58bed5a06c47ce70fa97f8218b1b2743a818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018590523060a0808301919091528251808303909101815260c090910190915280519101206003555061012633836001600160e01b0361012d16565b505061022d565b610146816000546101cf60201b610ade1790919060201c565b60009081556001600160a01b038316815260016020908152604090912054610177918390610ade6101cf821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b80820182811015610227576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b610b868061023c6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104b0565b61021b6104d4565b6040805160ff9092168252519081900360200190f35b6101b66104d9565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104df565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f1565b6100ec610503565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053c565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610549565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610815565b6040518060400160405280601481526020017f4465666c6174696e67205465737420546f6b656e00000000000000000000000081525081565b60006103c1338484610832565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461049b5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610469908363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a6848484610913565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020017f445454000000000000000000000000000000000000000000000000000000000081525081565b60006103c1338484610913565b428410156105b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610719573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061079457508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b61080a898989610832565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b606481046109218482610a19565b6000610933838363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001602052604090205490915061096c908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526001602052604080822093909355908616815220546109ae908263ffffffff610ade16565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526001602090815260409182902094909455805185815290519193928916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054610a4f908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554610a89908263ffffffff6108a116565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea26469706673582212202f0e78f9ad9dc52798d8a07955379a3b2a04dd368c019555a5d49d53fe65683264736f6c63430006060033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104b0565b61021b6104d4565b6040805160ff9092168252519081900360200190f35b6101b66104d9565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104df565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f1565b6100ec610503565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053c565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610549565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610815565b6040518060400160405280601481526020017f4465666c6174696e67205465737420546f6b656e00000000000000000000000081525081565b60006103c1338484610832565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461049b5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610469908363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a6848484610913565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020017f445454000000000000000000000000000000000000000000000000000000000081525081565b60006103c1338484610913565b428410156105b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610719573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061079457508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b61080a898989610832565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b606481046109218482610a19565b6000610933838363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001602052604090205490915061096c908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526001602052604080822093909355908616815220546109ae908263ffffffff610ade16565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526001602090815260409182902094909455805185815290519193928916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054610a4f908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554610a89908263ffffffff6108a116565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea26469706673582212202f0e78f9ad9dc52798d8a07955379a3b2a04dd368c019555a5d49d53fe65683264736f6c63430006060033",
      "srcmap": "62:3507:21:-:0;;;864:504;5:9:-1;2:2;;;27:1;24;17:12;2:2;864:504:21;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;864:504:21;1066:95;;968:9;;1066:95;;;;;;;;;;;;;;;;1195:4;;;;;;;;;;;;;;1229:10;;;;;;;;;;-1:-1:-1;;;1229:10:21;;;;1038:272;;;;;;;;;1179:22;1038:272;;;;1219:21;1038:272;;;;;;;;;;1291:4;1038:272;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1038:272:21;;;;;;;1015:305;;;;;996:16;:324;-1:-1:-1;1330:31:21;1336:10;1348:12;-1:-1:-1;;;;;1330:5:21;:31;:::i;:::-;864:504;;62:3507;;1374:197;1446:22;1462:5;1446:11;;:15;;;;;;:22;;;;:::i;:::-;1432:11;:36;;;-1:-1:-1;;;;;1494:13:21;;;;:9;:13;;;;;;;;;:24;;1512:5;;1494:17;;;;;:24;;:::i;:::-;-1:-1:-1;;;;;1478:13:21;;;;;;:9;:13;;;;;;;;:40;;;;1533:31;;;;;;;1478:13;;;;1533:31;;;;;;;;;;1374:197;;:::o;154:126:20:-;237:5;;;232:16;;;;224:49;;;;;-1:-1:-1;;;224:49:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;154:126;;;;:::o;62:3507:21:-;;;;;;;",
      "srcmap-runtime": "62:3507:21:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;62:3507:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;122:52:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;122:52:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2334:144;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2334:144:21;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;264:24;;;:::i;:::-;;;;;;;;;;;;;;;;2626:295;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2626:295:21;;;;;;;;;;;;;;;;;;:::i;550:108::-;;;:::i;223:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;409:31;;;:::i;294:41::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;294:41:21;;;;:::i;664:38::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;664:38:21;;;;:::i;180:37::-;;;:::i;2484:136::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2484:136:21;;;;;;;;;:::i;2927:640::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;2927:640:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;341:61;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;341:61:21;;;;;;;;;;;:::i;122:52::-;;;;;;;;;;;;;;;;;;;:::o;2334:144::-;2398:4;2414:36;2423:10;2435:7;2444:5;2414:8;:36::i;:::-;-1:-1:-1;2467:4:21;2334:144;;;;;:::o;264:24::-;;;;:::o;2626:295::-;2724:15;;;2704:4;2724:15;;;:9;:15;;;;;;;;2740:10;2724:27;;;;;;;;2760:2;2724:39;2720:138;;2809:15;;;;;;;:9;:15;;;;;;;;2825:10;2809:27;;;;;;;;:38;;2841:5;2809:38;:31;:38;:::i;:::-;2779:15;;;;;;;:9;:15;;;;;;;;2795:10;2779:27;;;;;;;:68;2720:138;2867:26;2877:4;2883:2;2887:5;2867:9;:26::i;:::-;-1:-1:-1;2910:4:21;2626:295;;;;;:::o;550:108::-;592:66;550:108;:::o;223:35::-;256:2;223:35;:::o;409:31::-;;;;:::o;294:41::-;;;;;;;;;;;;;:::o;664:38::-;;;;;;;;;;;;;:::o;180:37::-;;;;;;;;;;;;;;;;;;;:::o;2484:136::-;2544:4;2560:32;2570:10;2582:2;2586:5;2560:9;:32::i;2927:640::-;3072:15;3060:8;:27;;3052:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3211:16;;3306:13;;;;3109:14;3306:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3255:77;;592:66;3255:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3255:77:21;;;;;3245:88;;;;;;3149:198;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3149:198:21;;;;;;3126:231;;;;;;;;;3394:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3109:14;;3306:15;3394:26;;;;;-1:-1:-1;3394:26:21;;;;;;;;;;3306:15;3394:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3394:26:21;;;;;;-1:-1:-1;;3438:30:21;;;;;;;:59;;;3492:5;3472:25;;:16;:25;;;3438:59;3430:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3529:31;3538:5;3545:7;3554:5;3529:8;:31::i;:::-;2927:640;;;;;;;;;:::o;341:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1788:166::-;1868:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;1916:31;;;;;;;;;;;;;;;;;1788:166;;;:::o;286:127:20:-;369:5;;;364:16;;;;356:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1960:368:21;2061:3;2053:11;;2074:23;2080:4;2053:11;2074:5;:23::i;:::-;2107:19;2129:21;:5;2139:10;2129:21;:9;:21;:::i;:::-;2178:15;;;;;;;:9;:15;;;;;;2107:43;;-1:-1:-1;2178:35:21;;2107:43;2178:35;:19;:35;:::i;:::-;2160:15;;;;;;;;:9;:15;;;;;;:53;;;;2239:13;;;;;;;:33;;2257:14;2239:33;:17;:33;:::i;:::-;2223:13;;;;;;;;:9;:13;;;;;;;;;:49;;;;2287:34;;;;;;;2223:13;;2287:34;;;;;;;;;;;;;1960:368;;;;;:::o;1577:205::-;1655:15;;;;;;;:9;:15;;;;;;:26;;1675:5;1655:26;:19;:26;:::i;:::-;1637:15;;;;;;;:9;:15;;;;;:44;;;;1705:11;:22;;1721:5;1705:22;:15;:22;:::i;:::-;1691:11;:36;;;1742:33;;;;;;;;;;;;;;;;;;;;;;1577:205;;:::o;154:126:20:-;237:5;;;232:16;;;;224:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
    },
    "contracts/test/ERC20.sol:ERC20": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_totalSupply",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50604051610d17380380610d178339818101604052602081101561003357600080fd5b50516040514690806052610cc58239604080519182900360520182208282018252600a8352692a32b9ba102a37b5b2b760b11b6020938401528151808301835260018152603160f81b908401528151808401919091527f81e8ad438398ab0d4a2a7ecb159490c091bb27c67ace5181f70084e30fadaea2818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018590523060a0808301919091528251808303909101815260c090910190915280519101206003555061011333836001600160e01b0361011a16565b505061021a565b610133816000546101bc60201b6109f41790919060201c565b60009081556001600160a01b0383168152600160209081526040909120546101649183906109f46101bc821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b80820182811015610214576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b610a9c806102296000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104b0565b61021b6104d4565b6040805160ff9092168252519081900360200190f35b6101b66104d9565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104df565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f1565b6100ec610503565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053c565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610549565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610815565b6040518060400160405280600a81526020017f5465737420546f6b656e0000000000000000000000000000000000000000000081525081565b60006103c1338484610832565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461049b5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610469908363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a6848484610913565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600281526020017f545400000000000000000000000000000000000000000000000000000000000081525081565b60006103c1338484610913565b428410156105b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610719573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061079457508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b61080a898989610832565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054610949908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461098b908263ffffffff6109f416565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea264697066735822122088dd2cc69fd3f9285298e4ebffe1a1c0d5879c3b058b39ab620edca07711253164736f6c63430006060033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xD17 CODESIZE SUB DUP1 PUSH2 0xD17 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 MLOAD CHAINID SWAP1 DUP1 PUSH1 0x52 PUSH2 0xCC5 DUP3 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x52 ADD DUP3 KECCAK256 DUP3 DUP3 ADD DUP3 MSTORE PUSH1 0xA DUP4 MSTORE PUSH10 0x2A32B9BA102A37B5B2B7 PUSH1 0xB1 SHL PUSH1 0x20 SWAP4 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x81E8AD438398AB0D4A2A7ECB159490C091BB27C67ACE5181F70084E30FADAEA2 DUP2 DUP4 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE POP PUSH2 0x113 CALLER DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x11A AND JUMP JUMPDEST POP POP PUSH2 0x21A JUMP JUMPDEST PUSH2 0x133 DUP2 PUSH1 0x0 SLOAD PUSH2 0x1BC PUSH1 0x20 SHL PUSH2 0x9F4 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x164 SWAP2 DUP4 SWAP1 PUSH2 0x9F4 PUSH2 0x1BC DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x214 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA9C DUP1 PUSH2 0x229 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x2E0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x340 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x26C JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x213 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x3CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3D1 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x4B0 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x4D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4DF JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4F1 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x503 JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x53C JUMP JUMPDEST PUSH2 0x33E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x549 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x815 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5465737420546F6B656E00000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x832 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x49B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x469 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x4A6 DUP5 DUP5 DUP5 PUSH2 0x913 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5454000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x913 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x5B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4558504952454400000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x719 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x794 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x7FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5349474E4154555245000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x80A DUP10 DUP10 DUP10 PUSH2 0x832 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x949 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x98B SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x9F4 AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP9 0xDD 0x2C 0xC6 SWAP16 0xD3 0xF9 0x28 MSTORE SWAP9 0xE4 0xEB SELFDESTRUCT 0xE1 LOG1 0xC0 0xD5 DUP8 SWAP13 EXTCODESIZE SDIV DUP12 CODECOPY 0xAB PUSH3 0xEDCA0 PUSH24 0x11253164736F6C63430006060033454950373132446F6D61 PUSH10 0x6E28737472696E67206E PUSH2 0x6D65 0x2C PUSH20 0x7472696E672076657273696F6E2C75696E743235 CALLDATASIZE KECCAK256 PUSH4 0x6861696E 0x49 PUSH5 0x2C61646472 PUSH6 0x737320766572 PUSH10 0x6679696E67436F6E7472 PUSH2 0x6374 0x29 ",
          "sourceMap": "62:3335:22:-:0;;;844:504;5:9:-1;2:2;;;27:1;24;17:12;2:2;844:504:22;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;844:504:22;1046:95;;948:9;;1046:95;;;;;;;;;;;;;;;;1175:4;;;;;;;;-1:-1:-1;;;1175:4:22;;;;;1209:10;;;;;;;;;;-1:-1:-1;;;1209:10:22;;;;1018:272;;;;;;;;;1159:22;1018:272;;;;1199:21;1018:272;;;;;;;;;;1271:4;1018:272;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1018:272:22;;;;;;;995:305;;;;;976:16;:324;-1:-1:-1;1310:31:22;1316:10;1328:12;-1:-1:-1;;;;;1310:5:22;:31;:::i;:::-;844:504;;62:3335;;1354:197;1426:22;1442:5;1426:11;;:15;;;;;;:22;;;;:::i;:::-;1412:11;:36;;;-1:-1:-1;;;;;1474:13:22;;;;:9;:13;;;;;;;;;:24;;1492:5;;1474:17;;;;;:24;;:::i;:::-;-1:-1:-1;;;;;1458:13:22;;;;;;:9;:13;;;;;;;;:40;;;;1513:31;;;;;;;1458:13;;;;1513:31;;;;;;;;;;1354:197;;:::o;154:126:20:-;237:5;;;232:16;;;;224:49;;;;;-1:-1:-1;;;224:49:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;154:126;;;;:::o;62:3335:22:-;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104b0565b61021b6104d4565b6040805160ff9092168252519081900360200190f35b6101b66104d9565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104df565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f1565b6100ec610503565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053c565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610549565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610815565b6040518060400160405280600a81526020017f5465737420546f6b656e0000000000000000000000000000000000000000000081525081565b60006103c1338484610832565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461049b5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610469908363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a6848484610913565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600281526020017f545400000000000000000000000000000000000000000000000000000000000081525081565b60006103c1338484610913565b428410156105b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610719573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061079457508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b61080a898989610832565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054610949908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461098b908263ffffffff6109f416565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea264697066735822122088dd2cc69fd3f9285298e4ebffe1a1c0d5879c3b058b39ab620edca07711253164736f6c63430006060033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x2E0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x340 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x26C JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x213 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x3CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3D1 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x4B0 JUMP JUMPDEST PUSH2 0x21B PUSH2 0x4D4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4DF JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4F1 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x503 JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x53C JUMP JUMPDEST PUSH2 0x33E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x549 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x815 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5465737420546F6B656E00000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x832 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x49B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x469 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x4A6 DUP5 DUP5 DUP5 PUSH2 0x913 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5454000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x913 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x5B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4558504952454400000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x719 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x794 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x7FF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5349474E4154555245000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x80A DUP10 DUP10 DUP10 PUSH2 0x832 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x949 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8A1 AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x98B SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x9F4 AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP9 0xDD 0x2C 0xC6 SWAP16 0xD3 0xF9 0x28 MSTORE SWAP9 0xE4 0xEB SELFDESTRUCT 0xE1 LOG1 0xC0 0xD5 DUP8 SWAP13 EXTCODESIZE SDIV DUP12 CODECOPY 0xAB PUSH3 0xEDCA0 PUSH24 0x11253164736F6C6343000606003300000000000000000000 ",
          "sourceMap": "62:3335:22:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;62:3335:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;113:42:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;113:42:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2162:144;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2162:144:22;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;244:24;;;:::i;:::-;;;;;;;;;;;;;;;;2454:295;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2454:295:22;;;;;;;;;;;;;;;;;;:::i;530:108::-;;;:::i;203:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;389:31;;;:::i;274:41::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;274:41:22;;;;:::i;644:38::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;644:38:22;;;;:::i;161:36::-;;;:::i;2312:136::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2312:136:22;;;;;;;;;:::i;2755:640::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;2755:640:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;321:61;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;321:61:22;;;;;;;;;;;:::i;113:42::-;;;;;;;;;;;;;;;;;;;:::o;2162:144::-;2226:4;2242:36;2251:10;2263:7;2272:5;2242:8;:36::i;:::-;-1:-1:-1;2295:4:22;2162:144;;;;;:::o;244:24::-;;;;:::o;2454:295::-;2552:15;;;2532:4;2552:15;;;:9;:15;;;;;;;;2568:10;2552:27;;;;;;;;2588:2;2552:39;2548:138;;2637:15;;;;;;;:9;:15;;;;;;;;2653:10;2637:27;;;;;;;;:38;;2669:5;2637:38;:31;:38;:::i;:::-;2607:15;;;;;;;:9;:15;;;;;;;;2623:10;2607:27;;;;;;;:68;2548:138;2695:26;2705:4;2711:2;2715:5;2695:9;:26::i;:::-;-1:-1:-1;2738:4:22;2454:295;;;;;:::o;530:108::-;572:66;530:108;:::o;203:35::-;236:2;203:35;:::o;389:31::-;;;;:::o;274:41::-;;;;;;;;;;;;;:::o;644:38::-;;;;;;;;;;;;;:::o;161:36::-;;;;;;;;;;;;;;;;;;;:::o;2312:136::-;2372:4;2388:32;2398:10;2410:2;2414:5;2388:9;:32::i;2755:640::-;2900:15;2888:8;:27;;2880:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3039:16;;3134:13;;;;2937:14;3134:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3083:77;;572:66;3083:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3083:77:22;;;;;3073:88;;;;;;2977:198;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2977:198:22;;;;;;2954:231;;;;;;;;;3222:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2937:14;;3134:15;3222:26;;;;;-1:-1:-1;3222:26:22;;;;;;;;;;3134:15;3222:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3222:26:22;;;;;;-1:-1:-1;;3266:30:22;;;;;;;:59;;;3320:5;3300:25;;:16;:25;;;3266:59;3258:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3357:31;3366:5;3373:7;3382:5;3357:8;:31::i;:::-;2755:640;;;;;;;;;:::o;321:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1768:166::-;1848:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;1896:31;;;;;;;;;;;;;;;;;1768:166;;;:::o;286:127:20:-;369:5;;;364:16;;;;356:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1940:216:22;2033:15;;;;;;;:9;:15;;;;;;:26;;2053:5;2033:26;:19;:26;:::i;:::-;2015:15;;;;;;;;:9;:15;;;;;;:44;;;;2085:13;;;;;;;:24;;2103:5;2085:24;:17;:24;:::i;:::-;2069:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;2124:25;;;;;;;2069:13;;2124:25;;;;;;;;;;;;;1940:216;;;:::o;154:126:20:-;237:5;;;232:16;;;;224:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
        }
      },
      "interface": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_totalSupply",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "608060405234801561001057600080fd5b50604051610d17380380610d178339818101604052602081101561003357600080fd5b50516040514690806052610cc58239604080519182900360520182208282018252600a8352692a32b9ba102a37b5b2b760b11b6020938401528151808301835260018152603160f81b908401528151808401919091527f81e8ad438398ab0d4a2a7ecb159490c091bb27c67ace5181f70084e30fadaea2818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018590523060a0808301919091528251808303909101815260c090910190915280519101206003555061011333836001600160e01b0361011a16565b505061021a565b610133816000546101bc60201b6109f41790919060201c565b60009081556001600160a01b0383168152600160209081526040909120546101649183906109f46101bc821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b80820182811015610214576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b610a9c806102296000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104b0565b61021b6104d4565b6040805160ff9092168252519081900360200190f35b6101b66104d9565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104df565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f1565b6100ec610503565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053c565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610549565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610815565b6040518060400160405280600a81526020017f5465737420546f6b656e0000000000000000000000000000000000000000000081525081565b60006103c1338484610832565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461049b5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610469908363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a6848484610913565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600281526020017f545400000000000000000000000000000000000000000000000000000000000081525081565b60006103c1338484610913565b428410156105b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610719573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061079457508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b61080a898989610832565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054610949908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461098b908263ffffffff6109f416565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea264697066735822122088dd2cc69fd3f9285298e4ebffe1a1c0d5879c3b058b39ab620edca07711253164736f6c63430006060033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
      "bin": "608060405234801561001057600080fd5b50604051610d17380380610d178339818101604052602081101561003357600080fd5b50516040514690806052610cc58239604080519182900360520182208282018252600a8352692a32b9ba102a37b5b2b760b11b6020938401528151808301835260018152603160f81b908401528151808401919091527f81e8ad438398ab0d4a2a7ecb159490c091bb27c67ace5181f70084e30fadaea2818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018590523060a0808301919091528251808303909101815260c090910190915280519101206003555061011333836001600160e01b0361011a16565b505061021a565b610133816000546101bc60201b6109f41790919060201c565b60009081556001600160a01b0383168152600160209081526040909120546101649183906109f46101bc821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b80820182811015610214576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b610a9c806102296000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104b0565b61021b6104d4565b6040805160ff9092168252519081900360200190f35b6101b66104d9565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104df565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f1565b6100ec610503565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053c565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610549565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610815565b6040518060400160405280600a81526020017f5465737420546f6b656e0000000000000000000000000000000000000000000081525081565b60006103c1338484610832565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461049b5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610469908363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a6848484610913565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600281526020017f545400000000000000000000000000000000000000000000000000000000000081525081565b60006103c1338484610913565b428410156105b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610719573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061079457508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b61080a898989610832565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054610949908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461098b908263ffffffff6109f416565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea264697066735822122088dd2cc69fd3f9285298e4ebffe1a1c0d5879c3b058b39ab620edca07711253164736f6c63430006060033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104b0565b61021b6104d4565b6040805160ff9092168252519081900360200190f35b6101b66104d9565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104df565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f1565b6100ec610503565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053c565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610549565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610815565b6040518060400160405280600a81526020017f5465737420546f6b656e0000000000000000000000000000000000000000000081525081565b60006103c1338484610832565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461049b5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610469908363ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a6848484610913565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600281526020017f545400000000000000000000000000000000000000000000000000000000000081525081565b60006103c1338484610913565b428410156105b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610719573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061079457508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b61080a898989610832565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054610949908263ffffffff6108a116565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461098b908263ffffffff6109f416565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea264697066735822122088dd2cc69fd3f9285298e4ebffe1a1c0d5879c3b058b39ab620edca07711253164736f6c63430006060033",
      "srcmap": "62:3335:22:-:0;;;844:504;5:9:-1;2:2;;;27:1;24;17:12;2:2;844:504:22;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;844:504:22;1046:95;;948:9;;1046:95;;;;;;;;;;;;;;;;1175:4;;;;;;;;-1:-1:-1;;;1175:4:22;;;;;1209:10;;;;;;;;;;-1:-1:-1;;;1209:10:22;;;;1018:272;;;;;;;;;1159:22;1018:272;;;;1199:21;1018:272;;;;;;;;;;1271:4;1018:272;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1018:272:22;;;;;;;995:305;;;;;976:16;:324;-1:-1:-1;1310:31:22;1316:10;1328:12;-1:-1:-1;;;;;1310:5:22;:31;:::i;:::-;844:504;;62:3335;;1354:197;1426:22;1442:5;1426:11;;:15;;;;;;:22;;;;:::i;:::-;1412:11;:36;;;-1:-1:-1;;;;;1474:13:22;;;;:9;:13;;;;;;;;;:24;;1492:5;;1474:17;;;;;:24;;:::i;:::-;-1:-1:-1;;;;;1458:13:22;;;;;;:9;:13;;;;;;;;:40;;;;1513:31;;;;;;;1458:13;;;;1513:31;;;;;;;;;;1354:197;;:::o;154:126:20:-;237:5;;;232:16;;;;224:49;;;;;-1:-1:-1;;;224:49:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;154:126;;;;:::o;62:3335:22:-;;;;;;;",
      "srcmap-runtime": "62:3335:22:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;62:3335:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;113:42:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;113:42:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2162:144;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2162:144:22;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;244:24;;;:::i;:::-;;;;;;;;;;;;;;;;2454:295;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2454:295:22;;;;;;;;;;;;;;;;;;:::i;530:108::-;;;:::i;203:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;389:31;;;:::i;274:41::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;274:41:22;;;;:::i;644:38::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;644:38:22;;;;:::i;161:36::-;;;:::i;2312:136::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2312:136:22;;;;;;;;;:::i;2755:640::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;2755:640:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;321:61;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;321:61:22;;;;;;;;;;;:::i;113:42::-;;;;;;;;;;;;;;;;;;;:::o;2162:144::-;2226:4;2242:36;2251:10;2263:7;2272:5;2242:8;:36::i;:::-;-1:-1:-1;2295:4:22;2162:144;;;;;:::o;244:24::-;;;;:::o;2454:295::-;2552:15;;;2532:4;2552:15;;;:9;:15;;;;;;;;2568:10;2552:27;;;;;;;;2588:2;2552:39;2548:138;;2637:15;;;;;;;:9;:15;;;;;;;;2653:10;2637:27;;;;;;;;:38;;2669:5;2637:38;:31;:38;:::i;:::-;2607:15;;;;;;;:9;:15;;;;;;;;2623:10;2607:27;;;;;;;:68;2548:138;2695:26;2705:4;2711:2;2715:5;2695:9;:26::i;:::-;-1:-1:-1;2738:4:22;2454:295;;;;;:::o;530:108::-;572:66;530:108;:::o;203:35::-;236:2;203:35;:::o;389:31::-;;;;:::o;274:41::-;;;;;;;;;;;;;:::o;644:38::-;;;;;;;;;;;;;:::o;161:36::-;;;;;;;;;;;;;;;;;;;:::o;2312:136::-;2372:4;2388:32;2398:10;2410:2;2414:5;2388:9;:32::i;2755:640::-;2900:15;2888:8;:27;;2880:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3039:16;;3134:13;;;;2937:14;3134:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3083:77;;572:66;3083:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3083:77:22;;;;;3073:88;;;;;;2977:198;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2977:198:22;;;;;;2954:231;;;;;;;;;3222:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2937:14;;3134:15;3222:26;;;;;-1:-1:-1;3222:26:22;;;;;;;;;;3134:15;3222:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3222:26:22;;;;;;-1:-1:-1;;3266:30:22;;;;;;;:59;;;3320:5;3300:25;;:16;:25;;;3266:59;3258:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3357:31;3366:5;3373:7;3382:5;3357:8;:31::i;:::-;2755:640;;;;;;;;;:::o;321:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1768:166::-;1848:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;1896:31;;;;;;;;;;;;;;;;;1768:166;;;:::o;286:127:20:-;369:5;;;364:16;;;;356:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1940:216:22;2033:15;;;;;;;:9;:15;;;;;;:26;;2053:5;2033:26;:19;:26;:::i;:::-;2015:15;;;;;;;;:9;:15;;;;;;:44;;;;2085:13;;;;;;;:24;;2103:5;2085:24;:17;:24;:::i;:::-;2069:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;2124:25;;;;;;;2069:13;;2124:25;;;;;;;;;;;;;1940:216;;;:::o;154:126:20:-;237:5;;;232:16;;;;224:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
    },
    "contracts/test/RouterEventEmitter.sol:RouterEventEmitter": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "name": "Amounts",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapETHForExactTokens",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokens",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETH",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokens",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactETH",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactTokens",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50611051806100206000396000f3fe6080604052600436106100695760003560e01c8063b05f579e11610043578063b05f579e146102bd578063fa3219d51461036b578063fde1adda1461042d57610070565b806322b5841014610075578063375734d9146101395780639c91fcb5146101fb57610070565b3661007057005b600080fd5b34801561008157600080fd5b50610137600480360360c081101561009857600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156100dc57600080fd5b8201836020820111156100ee57600080fd5b8035906020019184602083028401116401000000008311171561011057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356104db565b005b34801561014557600080fd5b50610137600480360360c081101561015c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156101a057600080fd5b8201836020820111156101b257600080fd5b803590602001918460208302840111640100000000831117156101d457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356107c5565b34801561020757600080fd5b50610137600480360360c081101561021e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561026257600080fd5b82018360208201111561027457600080fd5b8035906020019184602083028401116401000000008311171561029657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561091d565b610137600480360360a08110156102d357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561031057600080fd5b82018360208201111561032257600080fd5b8035906020019184602083028401116401000000008311171561034457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a75565b34801561037757600080fd5b50610137600480360360c081101561038e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156103d257600080fd5b8201836020820111156103e457600080fd5b8035906020019184602083028401116401000000008311171561040657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610d56565b610137600480360360a081101561044357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561048057600080fd5b82018360208201111561049257600080fd5b803590602001918460208302840111640100000000831117156104b457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610eae565b600060608873ffffffffffffffffffffffffffffffffffffffff16638803dbee60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610694576040519150601f19603f3d011682016040523d82523d6000602084013e610699565b606091505b5091509150816106a557fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b38180602001905160208110156106db57600080fd5b81019080805160405193929190846401000000008211156106fb57600080fd5b90830190602082018581111561071057600080fd5b825186602082028301116401000000008211171561072d57600080fd5b82525081516020918201928201910280838360005b8381101561075a578181015183820152602001610742565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156107a757818101518382015260200161078f565b505050509050019250505060405180910390a1505050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff166338ed173960e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b600060608873ffffffffffffffffffffffffffffffffffffffff166318cbafe560e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b600060608773ffffffffffffffffffffffffffffffffffffffff1663fb3bdb4160e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610bc657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b89565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610c26576040519150601f19603f3d011682016040523d82523d6000602084013e610c2b565b606091505b509150915081610c3757fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b3818060200190516020811015610c6d57600080fd5b8101908080516040519392919084640100000000821115610c8d57600080fd5b908301906020820185811115610ca257600080fd5b8251866020820283011164010000000082111715610cbf57600080fd5b82525081516020918201928201910280838360005b83811015610cec578181015183820152602001610cd4565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610d39578181015183820152602001610d21565b505050509050019250505060405180910390a15050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff16634a25d94a60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b600060608773ffffffffffffffffffffffffffffffffffffffff16637ff36ab560e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825286868281815260200192506020028082843760008382015260408051601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09081169094018281039094018252928352602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909d169c909c178c5292518151919b909a508a995097509550859450879350869250508310610bc657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b8956fea2646970667358221220de3a0ff1911f616b53b97de9168db6c4c797716b50e177a9131c247a71855f5f64736f6c63430006060033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1051 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x69 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB05F579E GT PUSH2 0x43 JUMPI DUP1 PUSH4 0xB05F579E EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0xFA3219D5 EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0xFDE1ADDA EQ PUSH2 0x42D JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x22B58410 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x375734D9 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0x9C91FCB5 EQ PUSH2 0x1FB JUMPI PUSH2 0x70 JUMP JUMPDEST CALLDATASIZE PUSH2 0x70 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4DB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x91D JUMP JUMPDEST PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA75 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD56 JUMP JUMPDEST PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x492 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xEAE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8803DBEE PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x634 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x5F7 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x694 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x699 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x6A5 JUMPI INVALID JUMPDEST PUSH32 0x4CC17991E3610E3400E74A8306AA421DAAEE1E3446FA22B490604610999E10B3 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x6FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x710 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x72D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x75A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x742 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7A7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x78F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x38ED1739 PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x634 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x5F7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18CBAFE5 PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x634 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x5F7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFB3BDB41 PUSH1 0xE0 SHL DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xBC6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB89 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xC26 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xC2B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xC37 JUMPI INVALID JUMPDEST PUSH32 0x4CC17991E3610E3400E74A8306AA421DAAEE1E3446FA22B490604610999E10B3 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0xC8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0xCA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0xCBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCEC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCD4 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD39 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD21 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4A25D94A PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x634 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x5F7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7FF36AB5 PUSH1 0xE0 SHL DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F SWAP1 SWAP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND SWAP1 SWAP5 ADD DUP3 DUP2 SUB SWAP1 SWAP5 ADD DUP3 MSTORE SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP14 AND SWAP13 SWAP1 SWAP13 OR DUP13 MSTORE SWAP3 MLOAD DUP2 MLOAD SWAP2 SWAP12 SWAP1 SWAP11 POP DUP11 SWAP10 POP SWAP8 POP SWAP6 POP DUP6 SWAP5 POP DUP8 SWAP4 POP DUP7 SWAP3 POP POP DUP4 LT PUSH2 0xBC6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB89 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDE GASPRICE 0xF CALL SWAP2 0x1F PUSH2 0x6B53 0xB9 PUSH30 0xE9168DB6C4C797716B50E177A9131C247A71855F5F64736F6C6343000606 STOP CALLER ",
          "sourceMap": "73:3117:23:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;73:3117:23;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "6080604052600436106100695760003560e01c8063b05f579e11610043578063b05f579e146102bd578063fa3219d51461036b578063fde1adda1461042d57610070565b806322b5841014610075578063375734d9146101395780639c91fcb5146101fb57610070565b3661007057005b600080fd5b34801561008157600080fd5b50610137600480360360c081101561009857600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156100dc57600080fd5b8201836020820111156100ee57600080fd5b8035906020019184602083028401116401000000008311171561011057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356104db565b005b34801561014557600080fd5b50610137600480360360c081101561015c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156101a057600080fd5b8201836020820111156101b257600080fd5b803590602001918460208302840111640100000000831117156101d457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356107c5565b34801561020757600080fd5b50610137600480360360c081101561021e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561026257600080fd5b82018360208201111561027457600080fd5b8035906020019184602083028401116401000000008311171561029657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561091d565b610137600480360360a08110156102d357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561031057600080fd5b82018360208201111561032257600080fd5b8035906020019184602083028401116401000000008311171561034457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a75565b34801561037757600080fd5b50610137600480360360c081101561038e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156103d257600080fd5b8201836020820111156103e457600080fd5b8035906020019184602083028401116401000000008311171561040657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610d56565b610137600480360360a081101561044357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561048057600080fd5b82018360208201111561049257600080fd5b803590602001918460208302840111640100000000831117156104b457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610eae565b600060608873ffffffffffffffffffffffffffffffffffffffff16638803dbee60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610694576040519150601f19603f3d011682016040523d82523d6000602084013e610699565b606091505b5091509150816106a557fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b38180602001905160208110156106db57600080fd5b81019080805160405193929190846401000000008211156106fb57600080fd5b90830190602082018581111561071057600080fd5b825186602082028301116401000000008211171561072d57600080fd5b82525081516020918201928201910280838360005b8381101561075a578181015183820152602001610742565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156107a757818101518382015260200161078f565b505050509050019250505060405180910390a1505050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff166338ed173960e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b600060608873ffffffffffffffffffffffffffffffffffffffff166318cbafe560e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b600060608773ffffffffffffffffffffffffffffffffffffffff1663fb3bdb4160e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610bc657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b89565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610c26576040519150601f19603f3d011682016040523d82523d6000602084013e610c2b565b606091505b509150915081610c3757fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b3818060200190516020811015610c6d57600080fd5b8101908080516040519392919084640100000000821115610c8d57600080fd5b908301906020820185811115610ca257600080fd5b8251866020820283011164010000000082111715610cbf57600080fd5b82525081516020918201928201910280838360005b83811015610cec578181015183820152602001610cd4565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610d39578181015183820152602001610d21565b505050509050019250505060405180910390a15050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff16634a25d94a60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b600060608773ffffffffffffffffffffffffffffffffffffffff16637ff36ab560e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825286868281815260200192506020028082843760008382015260408051601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09081169094018281039094018252928352602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909d169c909c178c5292518151919b909a508a995097509550859450879350869250508310610bc657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b8956fea2646970667358221220de3a0ff1911f616b53b97de9168db6c4c797716b50e177a9131c247a71855f5f64736f6c63430006060033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x69 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB05F579E GT PUSH2 0x43 JUMPI DUP1 PUSH4 0xB05F579E EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0xFA3219D5 EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0xFDE1ADDA EQ PUSH2 0x42D JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x22B58410 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x375734D9 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0x9C91FCB5 EQ PUSH2 0x1FB JUMPI PUSH2 0x70 JUMP JUMPDEST CALLDATASIZE PUSH2 0x70 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4DB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x91D JUMP JUMPDEST PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA75 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xD56 JUMP JUMPDEST PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x480 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x492 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xEAE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8803DBEE PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x634 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x5F7 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x694 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x699 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x6A5 JUMPI INVALID JUMPDEST PUSH32 0x4CC17991E3610E3400E74A8306AA421DAAEE1E3446FA22B490604610999E10B3 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x6FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x710 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x72D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x75A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x742 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7A7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x78F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x38ED1739 PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x634 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x5F7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18CBAFE5 PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x634 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x5F7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFB3BDB41 PUSH1 0xE0 SHL DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xBC6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB89 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xC26 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xC2B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xC37 JUMPI INVALID JUMPDEST PUSH32 0x4CC17991E3610E3400E74A8306AA421DAAEE1E3446FA22B490604610999E10B3 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0xC8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0xCA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0xCBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCEC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCD4 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xD39 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD21 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4A25D94A PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x634 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x5F7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7FF36AB5 PUSH1 0xE0 SHL DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F SWAP1 SWAP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND SWAP1 SWAP5 ADD DUP3 DUP2 SUB SWAP1 SWAP5 ADD DUP3 MSTORE SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP14 AND SWAP13 SWAP1 SWAP13 OR DUP13 MSTORE SWAP3 MLOAD DUP2 MLOAD SWAP2 SWAP12 SWAP1 SWAP11 POP DUP11 SWAP10 POP SWAP8 POP SWAP6 POP DUP6 SWAP5 POP DUP8 SWAP4 POP DUP7 SWAP3 POP POP DUP4 LT PUSH2 0xBC6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB89 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDE GASPRICE 0xF CALL SWAP2 0x1F PUSH2 0x6B53 0xB9 PUSH30 0xE9168DB6C4C797716B50E177A9131C247A71855F5F64736F6C6343000606 STOP CALLER ",
          "sourceMap": "73:3117:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;694:510:23;;5:9:-1;2:2;;;27:1;24;17:12;2:2;694:510:23;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;694:510:23;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;694:510:23;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;694:510:23;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;694:510:23;;-1:-1:-1;694:510:23;-1:-1:-1;694:510:23;;;;;;;;;:::i;:::-;;178;;5:9:-1;2:2;;;27:1;24;17:12;2:2;178:510:23;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;178:510:23;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;178:510:23;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;178:510:23;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;178:510:23;;-1:-1:-1;178:510:23;-1:-1:-1;178:510:23;;;;;;;;;:::i;2205:504::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2205:504:23;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;2205:504:23;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;2205:504:23;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;2205:504:23;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2205:504:23;;-1:-1:-1;2205:504:23;-1:-1:-1;2205:504:23;;;;;;;;;:::i;2715:473::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;2715:473:23;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;2715:473:23;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;2715:473:23;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2715:473:23;;-1:-1:-1;2715:473:23;-1:-1:-1;2715:473:23;;;;;;;;;:::i;1695:504::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1695:504:23;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;1695:504:23;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;1695:504:23;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1695:504:23;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1695:504:23;;-1:-1:-1;1695:504:23;-1:-1:-1;1695:504:23;;;;;;;;;:::i;1210:479::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;1210:479:23;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;1210:479:23;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1210:479:23;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1210:479:23;;-1:-1:-1;1210:479:23;-1:-1:-1;1210:479:23;;;;;;;;;:::i;694:510::-;904:12;918:23;945:6;:19;;1001:60;;;1063:9;1074:11;1087:4;;1093:2;1097:8;965:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;965:150:23;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;965:150:23;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;965:150:23;945:171;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;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;;;945:171:23;;;;;;;;;;;;;;;;;;;;;;;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;;903:213:23;;;;1133:7;1126:15;;;;1156:41;1175:10;1164:32;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1164:32:23;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;1164:32:23;;421:4:-1;412:14;;;;1164:32:23;;;;;412:14:-1;1164:32:23;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1164:32:23;;;;;;;;;;;1156:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1156:41:23;;;;;;;;;;;;;;;;;694:510;;;;;;;;;:::o;178:::-;388:12;402:23;429:6;:19;;485:60;;;547:8;557:12;571:4;;577:2;581:8;449:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;449:150:23;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;449:150:23;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;449:150:23;429:171;;;;;;;;;;;;;66:2:-1;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;2205:504:23;2412:12;2426:23;2453:6;:19;;2509:57;;;2568:8;2578:12;2592:4;;2598:2;2602:8;2473:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2473:147:23;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2473:147:23;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2473:147:23;2453:168;;;;;;;;;;;;;66:2:-1;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;2715:473:23;2904:12;2918:23;2945:6;:19;;3001:57;;;3060:9;3071:4;;3077:2;3081:8;2965:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2965:134:23;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2965:134:23;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2965:134:23;2945:155;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;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;;;2945:155:23;;;;;;;;;;;;;;;;;;;;;;;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;;2903:197:23;;;;3117:7;3110:15;;;;3140:41;3159:10;3148:32;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3148:32:23;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;3148:32:23;;421:4:-1;412:14;;;;3148:32:23;;;;;412:14:-1;3148:32:23;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3148:32:23;;;;;;;;;;;3140:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3140:41:23;;;;;;;;;;;;;;;;;2715:473;;;;;;;;:::o;1695:504::-;1902:12;1916:23;1943:6;:19;;1999:57;;;2058:9;2069:11;2082:4;;2088:2;2092:8;1963:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1963:147:23;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1963:147:23;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;1963:147:23;1943:168;;;;;;;;;;;;;66:2:-1;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;1210:479:23;1402:12;1416:23;1443:6;:19;;1499:57;;;1558:12;1572:4;;1578:2;1582:8;1463:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;1463:137:23;;;137:4:-1;117:14;;;133:9;113:30;;;157:16;;;26:21;;;22:32;;;6:49;;1463:137:23;;;49:4:-1;25:18;;;61:17;;1463:137:23;182:15:-1;1463:137:23;;;;179:29:-1;;;;160:49;;1443:158:23;;;;1463:137;;1443:158;;-1:-1:-1;1443:158:23;;-1:-1:-1;25:18;-1:-1;1443:158:23;-1:-1:-1;1443:158:23;;-1:-1:-1;1443:158:23;;-1:-1:-1;25:18;;-1:-1;;58:11;;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;"
        }
      },
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "name": "Amounts",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapETHForExactTokens",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokens",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETH",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokens",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactETH",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactTokens",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "bytecode": "608060405234801561001057600080fd5b50611051806100206000396000f3fe6080604052600436106100695760003560e01c8063b05f579e11610043578063b05f579e146102bd578063fa3219d51461036b578063fde1adda1461042d57610070565b806322b5841014610075578063375734d9146101395780639c91fcb5146101fb57610070565b3661007057005b600080fd5b34801561008157600080fd5b50610137600480360360c081101561009857600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156100dc57600080fd5b8201836020820111156100ee57600080fd5b8035906020019184602083028401116401000000008311171561011057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356104db565b005b34801561014557600080fd5b50610137600480360360c081101561015c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156101a057600080fd5b8201836020820111156101b257600080fd5b803590602001918460208302840111640100000000831117156101d457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356107c5565b34801561020757600080fd5b50610137600480360360c081101561021e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561026257600080fd5b82018360208201111561027457600080fd5b8035906020019184602083028401116401000000008311171561029657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561091d565b610137600480360360a08110156102d357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561031057600080fd5b82018360208201111561032257600080fd5b8035906020019184602083028401116401000000008311171561034457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a75565b34801561037757600080fd5b50610137600480360360c081101561038e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156103d257600080fd5b8201836020820111156103e457600080fd5b8035906020019184602083028401116401000000008311171561040657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610d56565b610137600480360360a081101561044357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561048057600080fd5b82018360208201111561049257600080fd5b803590602001918460208302840111640100000000831117156104b457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610eae565b600060608873ffffffffffffffffffffffffffffffffffffffff16638803dbee60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610694576040519150601f19603f3d011682016040523d82523d6000602084013e610699565b606091505b5091509150816106a557fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b38180602001905160208110156106db57600080fd5b81019080805160405193929190846401000000008211156106fb57600080fd5b90830190602082018581111561071057600080fd5b825186602082028301116401000000008211171561072d57600080fd5b82525081516020918201928201910280838360005b8381101561075a578181015183820152602001610742565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156107a757818101518382015260200161078f565b505050509050019250505060405180910390a1505050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff166338ed173960e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b600060608873ffffffffffffffffffffffffffffffffffffffff166318cbafe560e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b600060608773ffffffffffffffffffffffffffffffffffffffff1663fb3bdb4160e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610bc657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b89565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610c26576040519150601f19603f3d011682016040523d82523d6000602084013e610c2b565b606091505b509150915081610c3757fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b3818060200190516020811015610c6d57600080fd5b8101908080516040519392919084640100000000821115610c8d57600080fd5b908301906020820185811115610ca257600080fd5b8251866020820283011164010000000082111715610cbf57600080fd5b82525081516020918201928201910280838360005b83811015610cec578181015183820152602001610cd4565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610d39578181015183820152602001610d21565b505050509050019250505060405180910390a15050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff16634a25d94a60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b600060608773ffffffffffffffffffffffffffffffffffffffff16637ff36ab560e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825286868281815260200192506020028082843760008382015260408051601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09081169094018281039094018252928352602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909d169c909c178c5292518151919b909a508a995097509550859450879350869250508310610bc657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b8956fea2646970667358221220de3a0ff1911f616b53b97de9168db6c4c797716b50e177a9131c247a71855f5f64736f6c63430006060033",
      "bin": "608060405234801561001057600080fd5b50611051806100206000396000f3fe6080604052600436106100695760003560e01c8063b05f579e11610043578063b05f579e146102bd578063fa3219d51461036b578063fde1adda1461042d57610070565b806322b5841014610075578063375734d9146101395780639c91fcb5146101fb57610070565b3661007057005b600080fd5b34801561008157600080fd5b50610137600480360360c081101561009857600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156100dc57600080fd5b8201836020820111156100ee57600080fd5b8035906020019184602083028401116401000000008311171561011057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356104db565b005b34801561014557600080fd5b50610137600480360360c081101561015c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156101a057600080fd5b8201836020820111156101b257600080fd5b803590602001918460208302840111640100000000831117156101d457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356107c5565b34801561020757600080fd5b50610137600480360360c081101561021e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561026257600080fd5b82018360208201111561027457600080fd5b8035906020019184602083028401116401000000008311171561029657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561091d565b610137600480360360a08110156102d357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561031057600080fd5b82018360208201111561032257600080fd5b8035906020019184602083028401116401000000008311171561034457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a75565b34801561037757600080fd5b50610137600480360360c081101561038e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156103d257600080fd5b8201836020820111156103e457600080fd5b8035906020019184602083028401116401000000008311171561040657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610d56565b610137600480360360a081101561044357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561048057600080fd5b82018360208201111561049257600080fd5b803590602001918460208302840111640100000000831117156104b457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610eae565b600060608873ffffffffffffffffffffffffffffffffffffffff16638803dbee60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610694576040519150601f19603f3d011682016040523d82523d6000602084013e610699565b606091505b5091509150816106a557fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b38180602001905160208110156106db57600080fd5b81019080805160405193929190846401000000008211156106fb57600080fd5b90830190602082018581111561071057600080fd5b825186602082028301116401000000008211171561072d57600080fd5b82525081516020918201928201910280838360005b8381101561075a578181015183820152602001610742565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156107a757818101518382015260200161078f565b505050509050019250505060405180910390a1505050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff166338ed173960e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b600060608873ffffffffffffffffffffffffffffffffffffffff166318cbafe560e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b600060608773ffffffffffffffffffffffffffffffffffffffff1663fb3bdb4160e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610bc657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b89565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610c26576040519150601f19603f3d011682016040523d82523d6000602084013e610c2b565b606091505b509150915081610c3757fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b3818060200190516020811015610c6d57600080fd5b8101908080516040519392919084640100000000821115610c8d57600080fd5b908301906020820185811115610ca257600080fd5b8251866020820283011164010000000082111715610cbf57600080fd5b82525081516020918201928201910280838360005b83811015610cec578181015183820152602001610cd4565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610d39578181015183820152602001610d21565b505050509050019250505060405180910390a15050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff16634a25d94a60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b600060608773ffffffffffffffffffffffffffffffffffffffff16637ff36ab560e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825286868281815260200192506020028082843760008382015260408051601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09081169094018281039094018252928352602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909d169c909c178c5292518151919b909a508a995097509550859450879350869250508310610bc657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b8956fea2646970667358221220de3a0ff1911f616b53b97de9168db6c4c797716b50e177a9131c247a71855f5f64736f6c63430006060033",
      "bin-runtime": "6080604052600436106100695760003560e01c8063b05f579e11610043578063b05f579e146102bd578063fa3219d51461036b578063fde1adda1461042d57610070565b806322b5841014610075578063375734d9146101395780639c91fcb5146101fb57610070565b3661007057005b600080fd5b34801561008157600080fd5b50610137600480360360c081101561009857600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156100dc57600080fd5b8201836020820111156100ee57600080fd5b8035906020019184602083028401116401000000008311171561011057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356104db565b005b34801561014557600080fd5b50610137600480360360c081101561015c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156101a057600080fd5b8201836020820111156101b257600080fd5b803590602001918460208302840111640100000000831117156101d457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356107c5565b34801561020757600080fd5b50610137600480360360c081101561021e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561026257600080fd5b82018360208201111561027457600080fd5b8035906020019184602083028401116401000000008311171561029657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561091d565b610137600480360360a08110156102d357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561031057600080fd5b82018360208201111561032257600080fd5b8035906020019184602083028401116401000000008311171561034457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a75565b34801561037757600080fd5b50610137600480360360c081101561038e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156103d257600080fd5b8201836020820111156103e457600080fd5b8035906020019184602083028401116401000000008311171561040657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610d56565b610137600480360360a081101561044357600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561048057600080fd5b82018360208201111561049257600080fd5b803590602001918460208302840111640100000000831117156104b457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610eae565b600060608873ffffffffffffffffffffffffffffffffffffffff16638803dbee60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610694576040519150601f19603f3d011682016040523d82523d6000602084013e610699565b606091505b5091509150816106a557fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b38180602001905160208110156106db57600080fd5b81019080805160405193929190846401000000008211156106fb57600080fd5b90830190602082018581111561071057600080fd5b825186602082028301116401000000008211171561072d57600080fd5b82525081516020918201928201910280838360005b8381101561075a578181015183820152602001610742565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156107a757818101518382015260200161078f565b505050509050019250505060405180910390a1505050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff166338ed173960e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b600060608873ffffffffffffffffffffffffffffffffffffffff166318cbafe560e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b600060608773ffffffffffffffffffffffffffffffffffffffff1663fb3bdb4160e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610bc657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b89565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610c26576040519150601f19603f3d011682016040523d82523d6000602084013e610c2b565b606091505b509150915081610c3757fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b3818060200190516020811015610c6d57600080fd5b8101908080516040519392919084640100000000821115610c8d57600080fd5b908301906020820185811115610ca257600080fd5b8251866020820283011164010000000082111715610cbf57600080fd5b82525081516020918201928201910280838360005b83811015610cec578181015183820152602001610cd4565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610d39578181015183820152602001610d21565b505050509050019250505060405180910390a15050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff16634a25d94a60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061063457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105f7565b600060608773ffffffffffffffffffffffffffffffffffffffff16637ff36ab560e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825286868281815260200192506020028082843760008382015260408051601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09081169094018281039094018252928352602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909d169c909c178c5292518151919b909a508a995097509550859450879350869250508310610bc657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b8956fea2646970667358221220de3a0ff1911f616b53b97de9168db6c4c797716b50e177a9131c247a71855f5f64736f6c63430006060033",
      "srcmap": "73:3117:23:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;73:3117:23;;;;;;;",
      "srcmap-runtime": "73:3117:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;694:510:23;;5:9:-1;2:2;;;27:1;24;17:12;2:2;694:510:23;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;694:510:23;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;694:510:23;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;694:510:23;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;694:510:23;;-1:-1:-1;694:510:23;-1:-1:-1;694:510:23;;;;;;;;;:::i;:::-;;178;;5:9:-1;2:2;;;27:1;24;17:12;2:2;178:510:23;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;178:510:23;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;178:510:23;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;178:510:23;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;178:510:23;;-1:-1:-1;178:510:23;-1:-1:-1;178:510:23;;;;;;;;;:::i;2205:504::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2205:504:23;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;2205:504:23;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;2205:504:23;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;2205:504:23;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2205:504:23;;-1:-1:-1;2205:504:23;-1:-1:-1;2205:504:23;;;;;;;;;:::i;2715:473::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;2715:473:23;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;2715:473:23;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;2715:473:23;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2715:473:23;;-1:-1:-1;2715:473:23;-1:-1:-1;2715:473:23;;;;;;;;;:::i;1695:504::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1695:504:23;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;1695:504:23;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;1695:504:23;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1695:504:23;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1695:504:23;;-1:-1:-1;1695:504:23;-1:-1:-1;1695:504:23;;;;;;;;;:::i;1210:479::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;1210:479:23;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;1210:479:23;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1210:479:23;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1210:479:23;;-1:-1:-1;1210:479:23;-1:-1:-1;1210:479:23;;;;;;;;;:::i;694:510::-;904:12;918:23;945:6;:19;;1001:60;;;1063:9;1074:11;1087:4;;1093:2;1097:8;965:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;965:150:23;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;965:150:23;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;965:150:23;945:171;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;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;;;945:171:23;;;;;;;;;;;;;;;;;;;;;;;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;;903:213:23;;;;1133:7;1126:15;;;;1156:41;1175:10;1164:32;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1164:32:23;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;1164:32:23;;421:4:-1;412:14;;;;1164:32:23;;;;;412:14:-1;1164:32:23;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1164:32:23;;;;;;;;;;;1156:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1156:41:23;;;;;;;;;;;;;;;;;694:510;;;;;;;;;:::o;178:::-;388:12;402:23;429:6;:19;;485:60;;;547:8;557:12;571:4;;577:2;581:8;449:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;449:150:23;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;449:150:23;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;449:150:23;429:171;;;;;;;;;;;;;66:2:-1;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;2205:504:23;2412:12;2426:23;2453:6;:19;;2509:57;;;2568:8;2578:12;2592:4;;2598:2;2602:8;2473:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2473:147:23;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2473:147:23;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2473:147:23;2453:168;;;;;;;;;;;;;66:2:-1;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;2715:473:23;2904:12;2918:23;2945:6;:19;;3001:57;;;3060:9;3071:4;;3077:2;3081:8;2965:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2965:134:23;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2965:134:23;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2965:134:23;2945:155;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;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;;;2945:155:23;;;;;;;;;;;;;;;;;;;;;;;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;;2903:197:23;;;;3117:7;3110:15;;;;3140:41;3159:10;3148:32;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3148:32:23;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;3148:32:23;;421:4:-1;412:14;;;;3148:32:23;;;;;412:14:-1;3148:32:23;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3148:32:23;;;;;;;;;;;3140:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3140:41:23;;;;;;;;;;;;;;;;;2715:473;;;;;;;;:::o;1695:504::-;1902:12;1916:23;1943:6;:19;;1999:57;;;2058:9;2069:11;2082:4;;2088:2;2092:8;1963:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1963:147:23;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1963:147:23;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;1963:147:23;1943:168;;;;;;;;;;;;;66:2:-1;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;1210:479:23;1402:12;1416:23;1443:6;:19;;1499:57;;;1558:12;1572:4;;1578:2;1582:8;1463:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;1463:137:23;;;137:4:-1;117:14;;;133:9;113:30;;;157:16;;;26:21;;;22:32;;;6:49;;1463:137:23;;;49:4:-1;25:18;;;61:17;;1463:137:23;182:15:-1;1463:137:23;;;;179:29:-1;;;;160:49;;1443:158:23;;;;1463:137;;1443:158;;-1:-1:-1;1443:158:23;;-1:-1:-1;25:18;-1:-1;1443:158:23;-1:-1:-1;1443:158:23;;-1:-1:-1;1443:158:23;;-1:-1:-1;25:18;;-1:-1;;58:11;;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;"
    },
    "contracts/test/WEVMOS.sol:WEVMOS": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "guy",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Deposit",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Withdrawal",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "guy",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "deposit",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60c0604052600d60808190526c577261707065642045766d6f7360981b60a090815261002e916000919061007c565b50604080518082019091526006808252655745564d4f5360d01b602090920191825261005c9160019161007c565b506002805460ff1916601217905534801561007657600080fd5b50610117565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bd57805160ff19168380011785556100ea565b828001600101855582156100ea579182015b828111156100ea5782518255916020019190600101906100cf565b506100f69291506100fa565b5090565b61011491905b808211156100f65760008155600101610100565b90565b6108b3806101266000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102c8578063d0e30db01461030e578063dd62ed3e14610316576100bc565b8063313ce5671461024857806370a082311461027357806395d89b41146102b3576100bc565b806318160ddd116100a557806318160ddd146101a557806323b872dd146101cc5780632e1a7d4d1461021c576100bc565b806306fdde03146100c1578063095ea7b31461014b575b600080fd5b3480156100cd57600080fd5b506100d661035e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015757600080fd5b506101916004803603604081101561016e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040a565b604080519115158252519081900360200190f35b3480156101b157600080fd5b506101ba61047d565b60408051918252519081900360200190f35b3480156101d857600080fd5b50610191600480360360608110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610481565b34801561022857600080fd5b506102466004803603602081101561023f57600080fd5b5035610699565b005b34801561025457600080fd5b5061025d61076a565b6040805160ff9092168252519081900360200190f35b34801561027f57600080fd5b506101ba6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610773565b3480156102bf57600080fd5b506100d6610785565b3480156102d457600080fd5b50610191600480360360408110156102eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107fd565b610246610811565b34801561032257600080fd5b506101ba6004803603604081101561033957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610860565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156104ef57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff84163314801590610565575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b1561061b5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105e357604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156106f157604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610730573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b600061080a338484610481565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220e38bcad812a347b308bbf554488b6b6498d612ac5d56cb80f074d4cbcfa1990264736f6c63430006060033",
          "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0xD PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH13 0x577261707065642045766D6F73 PUSH1 0x98 SHL PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH2 0x2E SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH2 0x7C JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x6 DUP1 DUP3 MSTORE PUSH6 0x5745564D4F53 PUSH1 0xD0 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x5C SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x7C JUMP JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x117 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xBD JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xEA JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xEA JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xEA JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xCF JUMP JUMPDEST POP PUSH2 0xF6 SWAP3 SWAP2 POP PUSH2 0xFA JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x114 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x100 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x8B3 DUP1 PUSH2 0x126 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C8 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x316 JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2B3 JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1A5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x21C JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x35E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x40A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH2 0x47D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x481 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x699 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x76A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x773 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x785 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7FD JUMP JUMPDEST PUSH2 0x246 PUSH2 0x811 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x860 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x402 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x402 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x4EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x565 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ ISZERO JUMPDEST ISZERO PUSH2 0x61B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x5E3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE MLOAD DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x730 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x402 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x402 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x80A CALLER DUP5 DUP5 PUSH2 0x481 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD CALLVALUE SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE3 DUP12 0xCA 0xD8 SLT LOG3 SELFBALANCE 0xB3 ADDMOD 0xBB CREATE2 SLOAD 0x48 DUP12 PUSH12 0x6498D612AC5D56CB80F074D4 0xCB 0xCF LOG1 SWAP10 MUL PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "93:40:24:-:0;71:1831;93:40;;71:1831;93:40;;;-1:-1:-1;;;93:40:24;;;;;;-1:-1:-1;;93:40:24;;:::i;:::-;-1:-1:-1;139:33:24;;;;;;;;;;;;;-1:-1:-1;;;139:33:24;;;;;;;;;;;;:::i;:::-;-1:-1:-1;178:27:24;;;-1:-1:-1;;178:27:24;203:2;178:27;;;71:1831;2:2:-1;;;;27:1;24;17:12;2:2;71:1831:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;71:1831:24;;;-1:-1:-1;71:1831:24;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102c8578063d0e30db01461030e578063dd62ed3e14610316576100bc565b8063313ce5671461024857806370a082311461027357806395d89b41146102b3576100bc565b806318160ddd116100a557806318160ddd146101a557806323b872dd146101cc5780632e1a7d4d1461021c576100bc565b806306fdde03146100c1578063095ea7b31461014b575b600080fd5b3480156100cd57600080fd5b506100d661035e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015757600080fd5b506101916004803603604081101561016e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040a565b604080519115158252519081900360200190f35b3480156101b157600080fd5b506101ba61047d565b60408051918252519081900360200190f35b3480156101d857600080fd5b50610191600480360360608110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610481565b34801561022857600080fd5b506102466004803603602081101561023f57600080fd5b5035610699565b005b34801561025457600080fd5b5061025d61076a565b6040805160ff9092168252519081900360200190f35b34801561027f57600080fd5b506101ba6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610773565b3480156102bf57600080fd5b506100d6610785565b3480156102d457600080fd5b50610191600480360360408110156102eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107fd565b610246610811565b34801561032257600080fd5b506101ba6004803603604081101561033957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610860565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156104ef57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff84163314801590610565575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b1561061b5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105e357604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156106f157604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610730573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b600061080a338484610481565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220e38bcad812a347b308bbf554488b6b6498d612ac5d56cb80f074d4cbcfa1990264736f6c63430006060033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C8 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x316 JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2B3 JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1A5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x21C JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x35E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x40A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH2 0x47D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x481 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x699 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x76A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x773 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x785 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7FD JUMP JUMPDEST PUSH2 0x246 PUSH2 0x811 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x860 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x402 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x402 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x4EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x565 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ ISZERO JUMPDEST ISZERO PUSH2 0x61B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x5E3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE MLOAD DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x730 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x402 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x402 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x80A CALLER DUP5 DUP5 PUSH2 0x481 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD CALLVALUE SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE3 DUP12 0xCA 0xD8 SLT LOG3 SELFBALANCE 0xB3 ADDMOD 0xBB CREATE2 SLOAD 0x48 DUP12 PUSH12 0x6498D612AC5D56CB80F074D4 0xCB 0xCF LOG1 SWAP10 MUL PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ",
          "sourceMap": "71:1831:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;93:40:24;;5:9:-1;2:2;;;27:1;24;17:12;2:2;93:40:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;93:40:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1122:177;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1122:177:24;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1122:177:24;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1021:95;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1021:95:24;;;:::i;:::-;;;;;;;;;;;;;;;;1432:468;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1432:468:24;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1432:468:24;;;;;;;;;;;;;;;;;;:::i;808:207::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;808:207:24;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;808:207:24;;:::i;:::-;;178:27;;5:9:-1;2:2;;;27:1;24;17:12;2:2;178:27:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;464:65;;5:9:-1;2:2;;;27:1;24;17:12;2:2;464:65:24;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;464:65:24;;;;:::i;139:33::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;139:33:24;;;:::i;1305:121::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1305:121:24;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1305:121:24;;;;;;;;;:::i;673:130::-;;;:::i;535:65::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;535:65:24;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;535:65:24;;;;;;;;;;;:::i;93:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1122:177::-;1204:10;1178:4;1194:21;;;:9;:21;;;;;;;;;:26;;;;;;;;;;;:32;;;1241:30;;;;;;;1178:4;;1194:26;;1204:10;;1241:30;;;;;;;;-1:-1:-1;1288:4:24;1122:177;;;;:::o;1021:95::-;1088:21;1021:95;:::o;1432:468::-;1550:14;;;1522:4;1550:14;;;:9;:14;;;;;;:21;-1:-1:-1;1550:21:24;1542:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1591:17;;;1598:10;1591:17;;;;:59;;-1:-1:-1;1612:14:24;;;;;;;:9;:14;;;;;;;;1627:10;1612:26;;;;;;;;1647:2;1612:38;;1591:59;1587:183;;;1674:14;;;;;;;:9;:14;;;;;;;;1689:10;1674:26;;;;;;;;:33;-1:-1:-1;1674:33:24;1666:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1726:14;;;;;;;:9;:14;;;;;;;;1741:10;1726:26;;;;;;;:33;;;;;;;1587:183;1780:14;;;;;;;;:9;:14;;;;;;;;:21;;;;;;;1811:14;;;;;;;;;;:21;;;;;;1848:23;;;;;;;1811:14;;1848:23;;;;;;;;;;;-1:-1:-1;1889:4:24;1432:468;;;;;:::o;808:207::-;871:10;861:21;;;;:9;:21;;;;;;:28;-1:-1:-1;861:28:24;853:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;914:10;904:21;;;;:9;:21;;;;;;:28;;;;;;;942:24;;;;;;929:3;;942:24;;904:21;942:24;929:3;914:10;942:24;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;981:27:24;;;;;;;;992:10;;981:27;;;;;;;;;;808:207;:::o;178:27::-;;;;;;:::o;464:65::-;;;;;;;;;;;;;:::o;139:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1305:121;1362:4;1385:34;1398:10;1410:3;1415;1385:12;:34::i;:::-;1378:41;1305:121;-1:-1:-1;;;1305:121:24:o;673:130::-;727:10;717:21;;;;:9;:21;;;;;;;;;:34;;742:9;717:34;;;;;;766:30;;;;;;;;;;;;;;;;;673:130::o;535:65::-;;;;;;;;;;;;;;;;;;;;;;;;:::o"
        }
      },
      "interface": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "guy",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Deposit",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Withdrawal",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "guy",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "deposit",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "bytecode": "60c0604052600d60808190526c577261707065642045766d6f7360981b60a090815261002e916000919061007c565b50604080518082019091526006808252655745564d4f5360d01b602090920191825261005c9160019161007c565b506002805460ff1916601217905534801561007657600080fd5b50610117565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bd57805160ff19168380011785556100ea565b828001600101855582156100ea579182015b828111156100ea5782518255916020019190600101906100cf565b506100f69291506100fa565b5090565b61011491905b808211156100f65760008155600101610100565b90565b6108b3806101266000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102c8578063d0e30db01461030e578063dd62ed3e14610316576100bc565b8063313ce5671461024857806370a082311461027357806395d89b41146102b3576100bc565b806318160ddd116100a557806318160ddd146101a557806323b872dd146101cc5780632e1a7d4d1461021c576100bc565b806306fdde03146100c1578063095ea7b31461014b575b600080fd5b3480156100cd57600080fd5b506100d661035e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015757600080fd5b506101916004803603604081101561016e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040a565b604080519115158252519081900360200190f35b3480156101b157600080fd5b506101ba61047d565b60408051918252519081900360200190f35b3480156101d857600080fd5b50610191600480360360608110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610481565b34801561022857600080fd5b506102466004803603602081101561023f57600080fd5b5035610699565b005b34801561025457600080fd5b5061025d61076a565b6040805160ff9092168252519081900360200190f35b34801561027f57600080fd5b506101ba6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610773565b3480156102bf57600080fd5b506100d6610785565b3480156102d457600080fd5b50610191600480360360408110156102eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107fd565b610246610811565b34801561032257600080fd5b506101ba6004803603604081101561033957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610860565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156104ef57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff84163314801590610565575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b1561061b5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105e357604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156106f157604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610730573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b600061080a338484610481565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220e38bcad812a347b308bbf554488b6b6498d612ac5d56cb80f074d4cbcfa1990264736f6c63430006060033",
      "bin": "60c0604052600d60808190526c577261707065642045766d6f7360981b60a090815261002e916000919061007c565b50604080518082019091526006808252655745564d4f5360d01b602090920191825261005c9160019161007c565b506002805460ff1916601217905534801561007657600080fd5b50610117565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bd57805160ff19168380011785556100ea565b828001600101855582156100ea579182015b828111156100ea5782518255916020019190600101906100cf565b506100f69291506100fa565b5090565b61011491905b808211156100f65760008155600101610100565b90565b6108b3806101266000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102c8578063d0e30db01461030e578063dd62ed3e14610316576100bc565b8063313ce5671461024857806370a082311461027357806395d89b41146102b3576100bc565b806318160ddd116100a557806318160ddd146101a557806323b872dd146101cc5780632e1a7d4d1461021c576100bc565b806306fdde03146100c1578063095ea7b31461014b575b600080fd5b3480156100cd57600080fd5b506100d661035e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015757600080fd5b506101916004803603604081101561016e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040a565b604080519115158252519081900360200190f35b3480156101b157600080fd5b506101ba61047d565b60408051918252519081900360200190f35b3480156101d857600080fd5b50610191600480360360608110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610481565b34801561022857600080fd5b506102466004803603602081101561023f57600080fd5b5035610699565b005b34801561025457600080fd5b5061025d61076a565b6040805160ff9092168252519081900360200190f35b34801561027f57600080fd5b506101ba6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610773565b3480156102bf57600080fd5b506100d6610785565b3480156102d457600080fd5b50610191600480360360408110156102eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107fd565b610246610811565b34801561032257600080fd5b506101ba6004803603604081101561033957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610860565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156104ef57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff84163314801590610565575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b1561061b5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105e357604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156106f157604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610730573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b600061080a338484610481565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220e38bcad812a347b308bbf554488b6b6498d612ac5d56cb80f074d4cbcfa1990264736f6c63430006060033",
      "bin-runtime": "6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102c8578063d0e30db01461030e578063dd62ed3e14610316576100bc565b8063313ce5671461024857806370a082311461027357806395d89b41146102b3576100bc565b806318160ddd116100a557806318160ddd146101a557806323b872dd146101cc5780632e1a7d4d1461021c576100bc565b806306fdde03146100c1578063095ea7b31461014b575b600080fd5b3480156100cd57600080fd5b506100d661035e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015757600080fd5b506101916004803603604081101561016e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040a565b604080519115158252519081900360200190f35b3480156101b157600080fd5b506101ba61047d565b60408051918252519081900360200190f35b3480156101d857600080fd5b50610191600480360360608110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610481565b34801561022857600080fd5b506102466004803603602081101561023f57600080fd5b5035610699565b005b34801561025457600080fd5b5061025d61076a565b6040805160ff9092168252519081900360200190f35b34801561027f57600080fd5b506101ba6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610773565b3480156102bf57600080fd5b506100d6610785565b3480156102d457600080fd5b50610191600480360360408110156102eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107fd565b610246610811565b34801561032257600080fd5b506101ba6004803603604081101561033957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610860565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156104ef57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff84163314801590610565575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b1561061b5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105e357604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156106f157604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610730573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b600061080a338484610481565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220e38bcad812a347b308bbf554488b6b6498d612ac5d56cb80f074d4cbcfa1990264736f6c63430006060033",
      "srcmap": "93:40:24:-:0;71:1831;93:40;;71:1831;93:40;;;-1:-1:-1;;;93:40:24;;;;;;-1:-1:-1;;93:40:24;;:::i;:::-;-1:-1:-1;139:33:24;;;;;;;;;;;;;-1:-1:-1;;;139:33:24;;;;;;;;;;;;:::i;:::-;-1:-1:-1;178:27:24;;;-1:-1:-1;;178:27:24;203:2;178:27;;;71:1831;2:2:-1;;;;27:1;24;17:12;2:2;71:1831:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;71:1831:24;;;-1:-1:-1;71:1831:24;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
      "srcmap-runtime": "71:1831:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;93:40:24;;5:9:-1;2:2;;;27:1;24;17:12;2:2;93:40:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;93:40:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1122:177;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1122:177:24;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1122:177:24;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1021:95;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1021:95:24;;;:::i;:::-;;;;;;;;;;;;;;;;1432:468;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1432:468:24;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1432:468:24;;;;;;;;;;;;;;;;;;:::i;808:207::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;808:207:24;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;808:207:24;;:::i;:::-;;178:27;;5:9:-1;2:2;;;27:1;24;17:12;2:2;178:27:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;464:65;;5:9:-1;2:2;;;27:1;24;17:12;2:2;464:65:24;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;464:65:24;;;;:::i;139:33::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;139:33:24;;;:::i;1305:121::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1305:121:24;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1305:121:24;;;;;;;;;:::i;673:130::-;;;:::i;535:65::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;535:65:24;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;535:65:24;;;;;;;;;;;:::i;93:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1122:177::-;1204:10;1178:4;1194:21;;;:9;:21;;;;;;;;;:26;;;;;;;;;;;:32;;;1241:30;;;;;;;1178:4;;1194:26;;1204:10;;1241:30;;;;;;;;-1:-1:-1;1288:4:24;1122:177;;;;:::o;1021:95::-;1088:21;1021:95;:::o;1432:468::-;1550:14;;;1522:4;1550:14;;;:9;:14;;;;;;:21;-1:-1:-1;1550:21:24;1542:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1591:17;;;1598:10;1591:17;;;;:59;;-1:-1:-1;1612:14:24;;;;;;;:9;:14;;;;;;;;1627:10;1612:26;;;;;;;;1647:2;1612:38;;1591:59;1587:183;;;1674:14;;;;;;;:9;:14;;;;;;;;1689:10;1674:26;;;;;;;;:33;-1:-1:-1;1674:33:24;1666:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1726:14;;;;;;;:9;:14;;;;;;;;1741:10;1726:26;;;;;;;:33;;;;;;;1587:183;1780:14;;;;;;;;:9;:14;;;;;;;;:21;;;;;;;1811:14;;;;;;;;;;:21;;;;;;1848:23;;;;;;;1811:14;;1848:23;;;;;;;;;;;-1:-1:-1;1889:4:24;1432:468;;;;;:::o;808:207::-;871:10;861:21;;;;:9;:21;;;;;;:28;-1:-1:-1;861:28:24;853:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;914:10;904:21;;;;:9;:21;;;;;;:28;;;;;;;942:24;;;;;;929:3;;942:24;;904:21;942:24;929:3;914:10;942:24;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;981:27:24;;;;;;;;992:10;;981:27;;;;;;;;;;808:207;:::o;178:27::-;;;;;;:::o;464:65::-;;;;;;;;;;;;;:::o;139:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1305:121;1362:4;1385:34;1398:10;1410:3;1415;1385:12;:34::i;:::-;1378:41;1305:121;-1:-1:-1;;;1305:121:24:o;673:130::-;727:10;717:21;;;;:9;:21;;;;;;;;;:34;;742:9;717:34;;;;;;766:30;;;;;;;;;;;;;;;;;673:130::o;535:65::-;;;;;;;;;;;;;;;;;;;;;;;;:::o"
    }
  },
  "sources": {
    "@marx-dex/marx-dex-lib/contracts/libraries/Babylonian.sol": {
      "id": 0,
      "AST": {
        "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/Babylonian.sol",
        "exportedSymbols": {
          "Babylonian": [
            202
          ]
        },
        "id": 203,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1,
            "literals": [
              "solidity",
              ">=",
              "0.4",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "46:24:0"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 202,
            "linearizedBaseContracts": [
              202
            ],
            "name": "Babylonian",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 200,
                  "nodeType": "Block",
                  "src": "439:1140:0",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 10,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 8,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3,
                          "src": "453:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 9,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "458:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "453:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 13,
                      "nodeType": "IfStatement",
                      "src": "449:20:0",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "468:1:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 7,
                        "id": 12,
                        "nodeType": "Return",
                        "src": "461:8:0"
                      }
                    },
                    {
                      "assignments": [
                        15
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 15,
                          "mutability": "mutable",
                          "name": "xx",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 200,
                          "src": "631:10:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 14,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "631:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 17,
                      "initialValue": {
                        "argumentTypes": null,
                        "id": 16,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3,
                        "src": "644:1:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "631:14:0"
                    },
                    {
                      "assignments": [
                        19
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 19,
                          "mutability": "mutable",
                          "name": "r",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 200,
                          "src": "655:9:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 18,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "655:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 21,
                      "initialValue": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 20,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "667:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "655:13:0"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 24,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 22,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15,
                          "src": "682:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                          "id": 23,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "688:35:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                            "typeString": "int_const 3402...(31 digits omitted)...1456"
                          },
                          "value": "0x100000000000000000000000000000000"
                        },
                        "src": "682:41:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 34,
                      "nodeType": "IfStatement",
                      "src": "678:104:0",
                      "trueBody": {
                        "id": 33,
                        "nodeType": "Block",
                        "src": "725:57:0",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 27,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 25,
                                "name": "xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15,
                                "src": "739:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "313238",
                                "id": 26,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "746:3:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "739:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 28,
                            "nodeType": "ExpressionStatement",
                            "src": "739:10:0"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 31,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 29,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19,
                                "src": "763:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "<<=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3634",
                                "id": 30,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "769:2:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_64_by_1",
                                  "typeString": "int_const 64"
                                },
                                "value": "64"
                              },
                              "src": "763:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 32,
                            "nodeType": "ExpressionStatement",
                            "src": "763:8:0"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 37,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 35,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15,
                          "src": "795:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30783130303030303030303030303030303030",
                          "id": 36,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "801:19:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18446744073709551616_by_1",
                            "typeString": "int_const 18446744073709551616"
                          },
                          "value": "0x10000000000000000"
                        },
                        "src": "795:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 47,
                      "nodeType": "IfStatement",
                      "src": "791:87:0",
                      "trueBody": {
                        "id": 46,
                        "nodeType": "Block",
                        "src": "822:56:0",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 40,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 38,
                                "name": "xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15,
                                "src": "836:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3634",
                                "id": 39,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "843:2:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_64_by_1",
                                  "typeString": "int_const 64"
                                },
                                "value": "64"
                              },
                              "src": "836:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 41,
                            "nodeType": "ExpressionStatement",
                            "src": "836:9:0"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 44,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 42,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19,
                                "src": "859:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "<<=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 43,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "865:2:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "859:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 45,
                            "nodeType": "ExpressionStatement",
                            "src": "859:8:0"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 50,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 48,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15,
                          "src": "891:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030303030303030",
                          "id": 49,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "897:11:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4294967296_by_1",
                            "typeString": "int_const 4294967296"
                          },
                          "value": "0x100000000"
                        },
                        "src": "891:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 60,
                      "nodeType": "IfStatement",
                      "src": "887:79:0",
                      "trueBody": {
                        "id": 59,
                        "nodeType": "Block",
                        "src": "910:56:0",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 53,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 51,
                                "name": "xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15,
                                "src": "924:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 52,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "931:2:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "924:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 54,
                            "nodeType": "ExpressionStatement",
                            "src": "924:9:0"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 57,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 55,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19,
                                "src": "947:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "<<=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3136",
                                "id": 56,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "953:2:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_16_by_1",
                                  "typeString": "int_const 16"
                                },
                                "value": "16"
                              },
                              "src": "947:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 58,
                            "nodeType": "ExpressionStatement",
                            "src": "947:8:0"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 63,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 61,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15,
                          "src": "979:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30783130303030",
                          "id": 62,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "985:7:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_65536_by_1",
                            "typeString": "int_const 65536"
                          },
                          "value": "0x10000"
                        },
                        "src": "979:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 73,
                      "nodeType": "IfStatement",
                      "src": "975:74:0",
                      "trueBody": {
                        "id": 72,
                        "nodeType": "Block",
                        "src": "994:55:0",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 66,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 64,
                                "name": "xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15,
                                "src": "1008:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3136",
                                "id": 65,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1015:2:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_16_by_1",
                                  "typeString": "int_const 16"
                                },
                                "value": "16"
                              },
                              "src": "1008:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 67,
                            "nodeType": "ExpressionStatement",
                            "src": "1008:9:0"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 70,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 68,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19,
                                "src": "1031:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "<<=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "38",
                                "id": 69,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1037:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                },
                                "value": "8"
                              },
                              "src": "1031:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 71,
                            "nodeType": "ExpressionStatement",
                            "src": "1031:7:0"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 76,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 74,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15,
                          "src": "1062:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030",
                          "id": 75,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1068:5:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_256_by_1",
                            "typeString": "int_const 256"
                          },
                          "value": "0x100"
                        },
                        "src": "1062:11:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 86,
                      "nodeType": "IfStatement",
                      "src": "1058:71:0",
                      "trueBody": {
                        "id": 85,
                        "nodeType": "Block",
                        "src": "1075:54:0",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 79,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 77,
                                "name": "xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15,
                                "src": "1089:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "38",
                                "id": 78,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1096:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                },
                                "value": "8"
                              },
                              "src": "1089:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 80,
                            "nodeType": "ExpressionStatement",
                            "src": "1089:8:0"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 83,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 81,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19,
                                "src": "1111:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "<<=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 82,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1117:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "1111:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 84,
                            "nodeType": "ExpressionStatement",
                            "src": "1111:7:0"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 89,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 87,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15,
                          "src": "1142:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30783130",
                          "id": 88,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1148:4:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_16_by_1",
                            "typeString": "int_const 16"
                          },
                          "value": "0x10"
                        },
                        "src": "1142:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 99,
                      "nodeType": "IfStatement",
                      "src": "1138:70:0",
                      "trueBody": {
                        "id": 98,
                        "nodeType": "Block",
                        "src": "1154:54:0",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 92,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 90,
                                "name": "xx",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15,
                                "src": "1168:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 91,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1175:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "1168:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 93,
                            "nodeType": "ExpressionStatement",
                            "src": "1168:8:0"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 96,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 94,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19,
                                "src": "1190:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "<<=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 95,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1196:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "1190:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 97,
                            "nodeType": "ExpressionStatement",
                            "src": "1190:7:0"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 102,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 100,
                          "name": "xx",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15,
                          "src": "1221:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "307838",
                          "id": 101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1227:3:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8_by_1",
                            "typeString": "int_const 8"
                          },
                          "value": "0x8"
                        },
                        "src": "1221:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 108,
                      "nodeType": "IfStatement",
                      "src": "1217:47:0",
                      "trueBody": {
                        "id": 107,
                        "nodeType": "Block",
                        "src": "1232:32:0",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 105,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 103,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19,
                                "src": "1246:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "<<=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 104,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1252:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "1246:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 106,
                            "nodeType": "ExpressionStatement",
                            "src": "1246:7:0"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 118,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 109,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19,
                          "src": "1273:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 117,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 114,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 110,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19,
                                  "src": "1278:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 113,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 111,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3,
                                    "src": "1282:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 112,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19,
                                    "src": "1286:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1282:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1278:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 115,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1277:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 116,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1292:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1277:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1273:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 119,
                      "nodeType": "ExpressionStatement",
                      "src": "1273:20:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 129,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 120,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19,
                          "src": "1303:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 128,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 125,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 121,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19,
                                  "src": "1308:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 124,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 122,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3,
                                    "src": "1312:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 123,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19,
                                    "src": "1316:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1312:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1308:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 126,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1307:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 127,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1322:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1307:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1303:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 130,
                      "nodeType": "ExpressionStatement",
                      "src": "1303:20:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 140,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 131,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19,
                          "src": "1333:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 136,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 132,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19,
                                  "src": "1338:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 135,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 133,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3,
                                    "src": "1342:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 134,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19,
                                    "src": "1346:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1342:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1338:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 137,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1337:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1352:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1337:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1333:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 141,
                      "nodeType": "ExpressionStatement",
                      "src": "1333:20:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 142,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19,
                          "src": "1363:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 147,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 143,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19,
                                  "src": "1368:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 146,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 144,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3,
                                    "src": "1372:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 145,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19,
                                    "src": "1376:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1372:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1368:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 148,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1367:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1382:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1367:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1363:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 152,
                      "nodeType": "ExpressionStatement",
                      "src": "1363:20:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 162,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 153,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19,
                          "src": "1393:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 154,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19,
                                  "src": "1398:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 157,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 155,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3,
                                    "src": "1402:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 156,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19,
                                    "src": "1406:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1402:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1398:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 159,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1397:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1412:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1397:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1393:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 163,
                      "nodeType": "ExpressionStatement",
                      "src": "1393:20:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 173,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 164,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19,
                          "src": "1423:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 169,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 165,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19,
                                  "src": "1428:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 168,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 166,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3,
                                    "src": "1432:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 167,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19,
                                    "src": "1436:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1432:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1428:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 170,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1427:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1442:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1427:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1423:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 174,
                      "nodeType": "ExpressionStatement",
                      "src": "1423:20:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 175,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19,
                          "src": "1453:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 180,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 176,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19,
                                  "src": "1458:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 179,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 177,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3,
                                    "src": "1462:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 178,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19,
                                    "src": "1466:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1462:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1458:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 181,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1457:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1472:1:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1457:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1453:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 185,
                      "nodeType": "ExpressionStatement",
                      "src": "1453:20:0"
                    },
                    {
                      "assignments": [
                        187
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 187,
                          "mutability": "mutable",
                          "name": "r1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 200,
                          "src": "1520:10:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 186,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1520:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 191,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 190,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 188,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3,
                          "src": "1533:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 189,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19,
                          "src": "1537:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1533:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1520:18:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 192,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19,
                                "src": "1556:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 193,
                                "name": "r1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 187,
                                "src": "1560:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1556:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 196,
                              "name": "r1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 187,
                              "src": "1569:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 197,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "1556:15:0",
                            "trueExpression": {
                              "argumentTypes": null,
                              "id": 195,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19,
                              "src": "1565:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 198,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1555:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 7,
                      "id": 199,
                      "nodeType": "Return",
                      "src": "1548:24:0"
                    }
                  ]
                },
                "documentation": null,
                "id": 201,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sqrt",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 201,
                      "src": "396:9:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "396:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "395:11:0"
                },
                "returnParameters": {
                  "id": 7,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 201,
                      "src": "430:7:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "430:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "429:9:0"
                },
                "scope": 202,
                "src": "382:1197:0",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 203,
            "src": "210:1371:0"
          }
        ],
        "src": "46:1536:0"
      }
    },
    "@marx-dex/marx-dex-lib/contracts/libraries/BitMath.sol": {
      "id": 1,
      "AST": {
        "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/BitMath.sol",
        "exportedSymbols": {
          "BitMath": [
            480
          ]
        },
        "id": 481,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 204,
            "literals": [
              "solidity",
              ">=",
              "0.5",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "45:24:1"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 480,
            "linearizedBaseContracts": [
              480
            ],
            "name": "BitMath",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 317,
                  "nodeType": "Block",
                  "src": "288:697:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 214,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 212,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 206,
                              "src": "306:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "310:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "306:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a65726f",
                            "id": 215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "313:35:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_03c73b0187854c5090030bbfe0f7d97709bd7eabff8b89faf5be84b9d8c785d2",
                              "typeString": "literal_string \"BitMath::mostSignificantBit: zero\""
                            },
                            "value": "BitMath::mostSignificantBit: zero"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_03c73b0187854c5090030bbfe0f7d97709bd7eabff8b89faf5be84b9d8c785d2",
                              "typeString": "literal_string \"BitMath::mostSignificantBit: zero\""
                            }
                          ],
                          "id": 211,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "298:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 216,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "298:51:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 217,
                      "nodeType": "ExpressionStatement",
                      "src": "298:51:1"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 218,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 206,
                          "src": "364:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                          "id": 219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "369:35:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                            "typeString": "int_const 3402...(31 digits omitted)...1456"
                          },
                          "value": "0x100000000000000000000000000000000"
                        },
                        "src": "364:40:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 230,
                      "nodeType": "IfStatement",
                      "src": "360:102:1",
                      "trueBody": {
                        "id": 229,
                        "nodeType": "Block",
                        "src": "406:56:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 221,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 206,
                                "src": "420:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "313238",
                                "id": 222,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "426:3:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "420:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 224,
                            "nodeType": "ExpressionStatement",
                            "src": "420:9:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 225,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 209,
                                "src": "443:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "313238",
                                "id": 226,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "448:3:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "443:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 228,
                            "nodeType": "ExpressionStatement",
                            "src": "443:8:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 231,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 206,
                          "src": "475:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30783130303030303030303030303030303030",
                          "id": 232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "480:19:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18446744073709551616_by_1",
                            "typeString": "int_const 18446744073709551616"
                          },
                          "value": "0x10000000000000000"
                        },
                        "src": "475:24:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 243,
                      "nodeType": "IfStatement",
                      "src": "471:84:1",
                      "trueBody": {
                        "id": 242,
                        "nodeType": "Block",
                        "src": "501:54:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 236,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 234,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 206,
                                "src": "515:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3634",
                                "id": 235,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "521:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_64_by_1",
                                  "typeString": "int_const 64"
                                },
                                "value": "64"
                              },
                              "src": "515:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 237,
                            "nodeType": "ExpressionStatement",
                            "src": "515:8:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 238,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 209,
                                "src": "537:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3634",
                                "id": 239,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "542:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_64_by_1",
                                  "typeString": "int_const 64"
                                },
                                "value": "64"
                              },
                              "src": "537:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 241,
                            "nodeType": "ExpressionStatement",
                            "src": "537:7:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 246,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 244,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 206,
                          "src": "568:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030303030303030",
                          "id": 245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "573:11:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4294967296_by_1",
                            "typeString": "int_const 4294967296"
                          },
                          "value": "0x100000000"
                        },
                        "src": "568:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 256,
                      "nodeType": "IfStatement",
                      "src": "564:76:1",
                      "trueBody": {
                        "id": 255,
                        "nodeType": "Block",
                        "src": "586:54:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 247,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 206,
                                "src": "600:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 248,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "606:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "600:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 250,
                            "nodeType": "ExpressionStatement",
                            "src": "600:8:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 253,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 251,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 209,
                                "src": "622:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "627:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "622:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 254,
                            "nodeType": "ExpressionStatement",
                            "src": "622:7:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 259,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 257,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 206,
                          "src": "653:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30783130303030",
                          "id": 258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "658:7:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_65536_by_1",
                            "typeString": "int_const 65536"
                          },
                          "value": "0x10000"
                        },
                        "src": "653:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 269,
                      "nodeType": "IfStatement",
                      "src": "649:72:1",
                      "trueBody": {
                        "id": 268,
                        "nodeType": "Block",
                        "src": "667:54:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 260,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 206,
                                "src": "681:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3136",
                                "id": 261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "687:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_16_by_1",
                                  "typeString": "int_const 16"
                                },
                                "value": "16"
                              },
                              "src": "681:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 263,
                            "nodeType": "ExpressionStatement",
                            "src": "681:8:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 266,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 264,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 209,
                                "src": "703:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3136",
                                "id": 265,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "708:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_16_by_1",
                                  "typeString": "int_const 16"
                                },
                                "value": "16"
                              },
                              "src": "703:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 267,
                            "nodeType": "ExpressionStatement",
                            "src": "703:7:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 272,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 270,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 206,
                          "src": "734:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3078313030",
                          "id": 271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "739:5:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_256_by_1",
                            "typeString": "int_const 256"
                          },
                          "value": "0x100"
                        },
                        "src": "734:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 282,
                      "nodeType": "IfStatement",
                      "src": "730:68:1",
                      "trueBody": {
                        "id": 281,
                        "nodeType": "Block",
                        "src": "746:52:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 275,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 273,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 206,
                                "src": "760:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "38",
                                "id": 274,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "766:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                },
                                "value": "8"
                              },
                              "src": "760:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 276,
                            "nodeType": "ExpressionStatement",
                            "src": "760:7:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 277,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 209,
                                "src": "781:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "38",
                                "id": 278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "786:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                },
                                "value": "8"
                              },
                              "src": "781:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 280,
                            "nodeType": "ExpressionStatement",
                            "src": "781:6:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 285,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 283,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 206,
                          "src": "811:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30783130",
                          "id": 284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "816:4:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_16_by_1",
                            "typeString": "int_const 16"
                          },
                          "value": "0x10"
                        },
                        "src": "811:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 295,
                      "nodeType": "IfStatement",
                      "src": "807:67:1",
                      "trueBody": {
                        "id": 294,
                        "nodeType": "Block",
                        "src": "822:52:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 288,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 286,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 206,
                                "src": "836:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "842:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "836:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 289,
                            "nodeType": "ExpressionStatement",
                            "src": "836:7:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 290,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 209,
                                "src": "857:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "862:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "857:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 293,
                            "nodeType": "ExpressionStatement",
                            "src": "857:6:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 298,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 296,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 206,
                          "src": "887:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "307834",
                          "id": 297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "892:3:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          },
                          "value": "0x4"
                        },
                        "src": "887:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 308,
                      "nodeType": "IfStatement",
                      "src": "883:66:1",
                      "trueBody": {
                        "id": 307,
                        "nodeType": "Block",
                        "src": "897:52:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 301,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 299,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 206,
                                "src": "911:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 300,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "917:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "911:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 302,
                            "nodeType": "ExpressionStatement",
                            "src": "911:7:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 305,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 303,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 209,
                                "src": "932:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "937:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "932:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 306,
                            "nodeType": "ExpressionStatement",
                            "src": "932:6:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 309,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 206,
                          "src": "962:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "307832",
                          "id": 310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "967:3:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "0x2"
                        },
                        "src": "962:8:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 316,
                      "nodeType": "IfStatement",
                      "src": "958:20:1",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 312,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 209,
                            "src": "972:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 313,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "977:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "972:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 315,
                        "nodeType": "ExpressionStatement",
                        "src": "972:6:1"
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 318,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mostSignificantBit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 207,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 206,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 318,
                      "src": "245:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 205,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "245:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "244:11:1"
                },
                "returnParameters": {
                  "id": 210,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 209,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 318,
                      "src": "279:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 208,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "279:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "278:9:1"
                },
                "scope": 480,
                "src": "217:768:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 478,
                  "nodeType": "Block",
                  "src": "1282:830:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 328,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 326,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 320,
                              "src": "1300:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1304:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1300:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4269744d6174683a3a6c656173745369676e69666963616e744269743a207a65726f",
                            "id": 329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1307:36:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cedc9c6217b2cedc06d11ed96db2989630b9045493eb849d6df363a9a5eb1c43",
                              "typeString": "literal_string \"BitMath::leastSignificantBit: zero\""
                            },
                            "value": "BitMath::leastSignificantBit: zero"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_cedc9c6217b2cedc06d11ed96db2989630b9045493eb849d6df363a9a5eb1c43",
                              "typeString": "literal_string \"BitMath::leastSignificantBit: zero\""
                            }
                          ],
                          "id": 325,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1292:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 330,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1292:52:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 331,
                      "nodeType": "ExpressionStatement",
                      "src": "1292:52:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 334,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 332,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 323,
                          "src": "1355:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "323535",
                          "id": 333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1359:3:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_255_by_1",
                            "typeString": "int_const 255"
                          },
                          "value": "255"
                        },
                        "src": "1355:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 335,
                      "nodeType": "ExpressionStatement",
                      "src": "1355:7:1"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 336,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 320,
                            "src": "1376:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 340,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "1388:2:1",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 339,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1389:1:1",
                                  "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": 338,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1380:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 337,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "1380:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1380:11:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "1376:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1394:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1376:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 354,
                        "nodeType": "Block",
                        "src": "1436:34:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 352,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 350,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 320,
                                "src": "1450:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "313238",
                                "id": 351,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1456:3:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "1450:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 353,
                            "nodeType": "ExpressionStatement",
                            "src": "1450:9:1"
                          }
                        ]
                      },
                      "id": 355,
                      "nodeType": "IfStatement",
                      "src": "1372:98:1",
                      "trueBody": {
                        "id": 349,
                        "nodeType": "Block",
                        "src": "1397:33:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 345,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 323,
                                "src": "1411:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "313238",
                                "id": 346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1416:3:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "1411:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 348,
                            "nodeType": "ExpressionStatement",
                            "src": "1411:8:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 356,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 320,
                            "src": "1483:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 360,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "1494:2:1",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 359,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1495:1:1",
                                  "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": 358,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1487:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint64_$",
                                "typeString": "type(uint64)"
                              },
                              "typeName": {
                                "id": 357,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "1487:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 361,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1487:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "1483:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1500:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1483:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 374,
                        "nodeType": "Block",
                        "src": "1541:33:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 370,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 320,
                                "src": "1555:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3634",
                                "id": 371,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1561:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_64_by_1",
                                  "typeString": "int_const 64"
                                },
                                "value": "64"
                              },
                              "src": "1555:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 373,
                            "nodeType": "ExpressionStatement",
                            "src": "1555:8:1"
                          }
                        ]
                      },
                      "id": 375,
                      "nodeType": "IfStatement",
                      "src": "1479:95:1",
                      "trueBody": {
                        "id": 369,
                        "nodeType": "Block",
                        "src": "1503:32:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 367,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 365,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 323,
                                "src": "1517:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3634",
                                "id": 366,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1522:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_64_by_1",
                                  "typeString": "int_const 64"
                                },
                                "value": "64"
                              },
                              "src": "1517:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 368,
                            "nodeType": "ExpressionStatement",
                            "src": "1517:7:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 384,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 376,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 320,
                            "src": "1587:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 380,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "1598:2:1",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 379,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1599:1:1",
                                  "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": 378,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1591:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint32_$",
                                "typeString": "type(uint32)"
                              },
                              "typeName": {
                                "id": 377,
                                "name": "uint32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1591:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 381,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1591:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "1587:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 383,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1604:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1587:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 394,
                        "nodeType": "Block",
                        "src": "1645:33:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 390,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 320,
                                "src": "1659:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 391,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1665:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "1659:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 393,
                            "nodeType": "ExpressionStatement",
                            "src": "1659:8:1"
                          }
                        ]
                      },
                      "id": 395,
                      "nodeType": "IfStatement",
                      "src": "1583:95:1",
                      "trueBody": {
                        "id": 389,
                        "nodeType": "Block",
                        "src": "1607:32:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 387,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 385,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 323,
                                "src": "1621:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 386,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1626:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "1621:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 388,
                            "nodeType": "ExpressionStatement",
                            "src": "1621:7:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 404,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 396,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 320,
                            "src": "1691:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 400,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "1702:2:1",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 399,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1703:1:1",
                                  "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": 398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1695:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint16_$",
                                "typeString": "type(uint16)"
                              },
                              "typeName": {
                                "id": 397,
                                "name": "uint16",
                                "nodeType": "ElementaryTypeName",
                                "src": "1695:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 401,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1695:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "1691:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1708:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1691:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 414,
                        "nodeType": "Block",
                        "src": "1749:33:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 410,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 320,
                                "src": "1763:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3136",
                                "id": 411,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1769:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_16_by_1",
                                  "typeString": "int_const 16"
                                },
                                "value": "16"
                              },
                              "src": "1763:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 413,
                            "nodeType": "ExpressionStatement",
                            "src": "1763:8:1"
                          }
                        ]
                      },
                      "id": 415,
                      "nodeType": "IfStatement",
                      "src": "1687:95:1",
                      "trueBody": {
                        "id": 409,
                        "nodeType": "Block",
                        "src": "1711:32:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 407,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 405,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 323,
                                "src": "1725:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "3136",
                                "id": 406,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1730:2:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_16_by_1",
                                  "typeString": "int_const 16"
                                },
                                "value": "16"
                              },
                              "src": "1725:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 408,
                            "nodeType": "ExpressionStatement",
                            "src": "1725:7:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 416,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 320,
                            "src": "1795:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "1805:2:1",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 419,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1806:1:1",
                                  "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": 418,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1799:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": {
                                "id": 417,
                                "name": "uint8",
                                "nodeType": "ElementaryTypeName",
                                "src": "1799:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1799:9:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "1795:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1811:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1795:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 434,
                        "nodeType": "Block",
                        "src": "1851:32:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 430,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 320,
                                "src": "1865:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "38",
                                "id": 431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1871:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                },
                                "value": "8"
                              },
                              "src": "1865:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 433,
                            "nodeType": "ExpressionStatement",
                            "src": "1865:7:1"
                          }
                        ]
                      },
                      "id": 435,
                      "nodeType": "IfStatement",
                      "src": "1791:92:1",
                      "trueBody": {
                        "id": 429,
                        "nodeType": "Block",
                        "src": "1814:31:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 427,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 425,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 323,
                                "src": "1828:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "38",
                                "id": 426,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1833:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_8_by_1",
                                  "typeString": "int_const 8"
                                },
                                "value": "8"
                              },
                              "src": "1828:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 428,
                            "nodeType": "ExpressionStatement",
                            "src": "1828:6:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 436,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 320,
                            "src": "1896:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "307866",
                            "id": 437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1900:3:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_15_by_1",
                              "typeString": "int_const 15"
                            },
                            "value": "0xf"
                          },
                          "src": "1896:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 439,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1906:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1896:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 450,
                        "nodeType": "Block",
                        "src": "1946:32:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 446,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 320,
                                "src": "1960:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1966:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "1960:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 449,
                            "nodeType": "ExpressionStatement",
                            "src": "1960:7:1"
                          }
                        ]
                      },
                      "id": 451,
                      "nodeType": "IfStatement",
                      "src": "1892:86:1",
                      "trueBody": {
                        "id": 445,
                        "nodeType": "Block",
                        "src": "1909:31:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 443,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 441,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 323,
                                "src": "1923:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "34",
                                "id": 442,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1928:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                },
                                "value": "4"
                              },
                              "src": "1923:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 444,
                            "nodeType": "ExpressionStatement",
                            "src": "1923:6:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 456,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 452,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 320,
                            "src": "1991:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "307833",
                            "id": 453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1995:3:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "0x3"
                          },
                          "src": "1991:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2001:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1991:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 466,
                        "nodeType": "Block",
                        "src": "2041:32:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 462,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 320,
                                "src": "2055:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": ">>=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 463,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2061:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "2055:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 465,
                            "nodeType": "ExpressionStatement",
                            "src": "2055:7:1"
                          }
                        ]
                      },
                      "id": 467,
                      "nodeType": "IfStatement",
                      "src": "1987:86:1",
                      "trueBody": {
                        "id": 461,
                        "nodeType": "Block",
                        "src": "2004:31:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 457,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 323,
                                "src": "2018:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 458,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2023:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "2018:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "id": 460,
                            "nodeType": "ExpressionStatement",
                            "src": "2018:6:1"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 468,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 320,
                            "src": "2086:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "307831",
                            "id": 469,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2090:3:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "0x1"
                          },
                          "src": "2086:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2096:1:1",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2086:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 477,
                      "nodeType": "IfStatement",
                      "src": "2082:23:1",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 473,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 323,
                            "src": "2099:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 474,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2104:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2099:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 476,
                        "nodeType": "ExpressionStatement",
                        "src": "2099:6:1"
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 479,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "leastSignificantBit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 321,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 320,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 479,
                      "src": "1239:9:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 319,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1239:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1238:11:1"
                },
                "returnParameters": {
                  "id": 324,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 323,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 479,
                      "src": "1273:7:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 322,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "1273:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1272:9:1"
                },
                "scope": 480,
                "src": "1210:902:1",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 481,
            "src": "71:2043:1"
          }
        ],
        "src": "45:2070:1"
      }
    },
    "@marx-dex/marx-dex-lib/contracts/libraries/FixedPoint.sol": {
      "id": 2,
      "AST": {
        "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/FixedPoint.sol",
        "exportedSymbols": {
          "FixedPoint": [
            1109
          ]
        },
        "id": 1110,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 482,
            "literals": [
              "solidity",
              ">=",
              "0.4",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "45:24:2"
          },
          {
            "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/FullMath.sol",
            "file": "./FullMath.sol",
            "id": 483,
            "nodeType": "ImportDirective",
            "scope": 1110,
            "sourceUnit": 1331,
            "src": "71:24:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/Babylonian.sol",
            "file": "./Babylonian.sol",
            "id": 484,
            "nodeType": "ImportDirective",
            "scope": 1110,
            "sourceUnit": 203,
            "src": "96:26:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/BitMath.sol",
            "file": "./BitMath.sol",
            "id": 485,
            "nodeType": "ImportDirective",
            "scope": 1110,
            "sourceUnit": 481,
            "src": "123:23:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 1109,
            "linearizedBaseContracts": [
              1109
            ],
            "name": "FixedPoint",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "canonicalName": "FixedPoint.uq112x112",
                "id": 488,
                "members": [
                  {
                    "constant": false,
                    "id": 487,
                    "mutability": "mutable",
                    "name": "_x",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 488,
                    "src": "363:10:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint224",
                      "typeString": "uint224"
                    },
                    "typeName": {
                      "id": 486,
                      "name": "uint224",
                      "nodeType": "ElementaryTypeName",
                      "src": "363:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "uq112x112",
                "nodeType": "StructDefinition",
                "scope": 1109,
                "src": "336:44:2",
                "visibility": "public"
              },
              {
                "canonicalName": "FixedPoint.uq144x112",
                "id": 491,
                "members": [
                  {
                    "constant": false,
                    "id": 490,
                    "mutability": "mutable",
                    "name": "_x",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 491,
                    "src": "473:10:2",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 489,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "473:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "uq144x112",
                "nodeType": "StructDefinition",
                "scope": 1109,
                "src": "446:44:2",
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "552f888a",
                "id": 494,
                "mutability": "constant",
                "name": "RESOLUTION",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 1109,
                "src": "496:38:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 492,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "496:5:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "313132",
                  "id": 493,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "531:3:2",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_112_by_1",
                    "typeString": "int_const 112"
                  },
                  "value": "112"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "3bf7a83e",
                "id": 497,
                "mutability": "constant",
                "name": "Q112",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 1109,
                "src": "540:62:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 495,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "540:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "30783130303030303030303030303030303030303030303030303030303030",
                  "id": 496,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "571:31:2",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_5192296858534827628530496329220096_by_1",
                    "typeString": "int_const 5192...(26 digits omitted)...0096"
                  },
                  "value": "0x10000000000000000000000000000"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "id": 500,
                "mutability": "constant",
                "name": "Q224",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 1109,
                "src": "618:91:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 498,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "618:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                  "id": 499,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "650:59:2",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_26959946667150639794667015087019630673637144422540572481103610249216_by_1",
                    "typeString": "int_const 2695...(60 digits omitted)...9216"
                  },
                  "value": "0x100000000000000000000000000000000000000000000000000000000"
                },
                "visibility": "private"
              },
              {
                "constant": true,
                "id": 503,
                "mutability": "constant",
                "name": "LOWER_MASK",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 1109,
                "src": "725:68:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 501,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "725:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "307866666666666666666666666666666666666666666666666666666666",
                  "id": 502,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "763:30:2",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_5192296858534827628530496329220095_by_1",
                    "typeString": "int_const 5192...(26 digits omitted)...0095"
                  },
                  "value": "0xffffffffffffffffffffffffffff"
                },
                "visibility": "private"
              },
              {
                "body": {
                  "id": 519,
                  "nodeType": "Block",
                  "src": "946:59:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 513,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 505,
                                  "src": "981:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                ],
                                "id": 512,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "973:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint224_$",
                                  "typeString": "type(uint224)"
                                },
                                "typeName": {
                                  "id": 511,
                                  "name": "uint224",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "973:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 514,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "973:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 515,
                              "name": "RESOLUTION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 494,
                              "src": "987:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "973:24:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 510,
                          "name": "uq112x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 488,
                          "src": "963:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq112x112_$488_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                          }
                        },
                        "id": 517,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "963:35:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 509,
                      "id": 518,
                      "nodeType": "Return",
                      "src": "956:42:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 520,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "encode",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 506,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 505,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 520,
                      "src": "894:9:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 504,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "894:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "893:11:2"
                },
                "returnParameters": {
                  "id": 509,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 508,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 520,
                      "src": "928:16:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 507,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 488,
                        "src": "928:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "927:18:2"
                },
                "scope": 1109,
                "src": "878:127:2",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 536,
                  "nodeType": "Block",
                  "src": "1122:59:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 533,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 530,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 522,
                                  "src": "1157:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint144",
                                    "typeString": "uint144"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint144",
                                    "typeString": "uint144"
                                  }
                                ],
                                "id": 529,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1149:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 528,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1149:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 531,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1149:10:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 532,
                              "name": "RESOLUTION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 494,
                              "src": "1163:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "1149:24:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 527,
                          "name": "uq144x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 491,
                          "src": "1139:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq144x112_$491_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq144x112 storage pointer)"
                          }
                        },
                        "id": 534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1139:35:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$491_memory_ptr",
                          "typeString": "struct FixedPoint.uq144x112 memory"
                        }
                      },
                      "functionReturnParameters": 526,
                      "id": 535,
                      "nodeType": "Return",
                      "src": "1132:42:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 537,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "encode144",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 523,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 522,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 537,
                      "src": "1070:9:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint144",
                        "typeString": "uint144"
                      },
                      "typeName": {
                        "id": 521,
                        "name": "uint144",
                        "nodeType": "ElementaryTypeName",
                        "src": "1070:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint144",
                          "typeString": "uint144"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1069:11:2"
                },
                "returnParameters": {
                  "id": 526,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 525,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 537,
                      "src": "1104:16:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq144x112_$491_memory_ptr",
                        "typeString": "struct FixedPoint.uq144x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 524,
                        "name": "uq144x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 491,
                        "src": "1104:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$491_storage_ptr",
                          "typeString": "struct FixedPoint.uq144x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1103:18:2"
                },
                "scope": 1109,
                "src": "1051:130:2",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 552,
                  "nodeType": "Block",
                  "src": "1335:54:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 546,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 539,
                                "src": "1360:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 547,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 487,
                              "src": "1360:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 548,
                              "name": "RESOLUTION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 494,
                              "src": "1371:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "1360:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1352:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint112_$",
                            "typeString": "type(uint112)"
                          },
                          "typeName": {
                            "id": 544,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "1352:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 550,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1352:30:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "functionReturnParameters": 543,
                      "id": 551,
                      "nodeType": "Return",
                      "src": "1345:37:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 553,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "decode",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 540,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 539,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 553,
                      "src": "1280:21:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 538,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 488,
                        "src": "1280:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1279:23:2"
                },
                "returnParameters": {
                  "id": 543,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 542,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 553,
                      "src": "1326:7:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 541,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1326:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1325:9:2"
                },
                "scope": 1109,
                "src": "1264:125:2",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 568,
                  "nodeType": "Block",
                  "src": "1546:54:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 565,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 562,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 555,
                                "src": "1571:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq144x112_$491_memory_ptr",
                                  "typeString": "struct FixedPoint.uq144x112 memory"
                                }
                              },
                              "id": 563,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 490,
                              "src": "1571:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 564,
                              "name": "RESOLUTION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 494,
                              "src": "1582:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "1571:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1563:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint144_$",
                            "typeString": "type(uint144)"
                          },
                          "typeName": {
                            "id": 560,
                            "name": "uint144",
                            "nodeType": "ElementaryTypeName",
                            "src": "1563:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 566,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1563:30:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint144",
                          "typeString": "uint144"
                        }
                      },
                      "functionReturnParameters": 559,
                      "id": 567,
                      "nodeType": "Return",
                      "src": "1556:37:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 569,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "decode144",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 556,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 555,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 569,
                      "src": "1491:21:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq144x112_$491_memory_ptr",
                        "typeString": "struct FixedPoint.uq144x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 554,
                        "name": "uq144x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 491,
                        "src": "1491:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$491_storage_ptr",
                          "typeString": "struct FixedPoint.uq144x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1490:23:2"
                },
                "returnParameters": {
                  "id": 559,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 558,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 569,
                      "src": "1537:7:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint144",
                        "typeString": "uint144"
                      },
                      "typeName": {
                        "id": 557,
                        "name": "uint144",
                        "nodeType": "ElementaryTypeName",
                        "src": "1537:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint144",
                          "typeString": "uint144"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1536:9:2"
                },
                "scope": 1109,
                "src": "1472:128:2",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 606,
                  "nodeType": "Block",
                  "src": "1782:149:2",
                  "statements": [
                    {
                      "assignments": [
                        579
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 579,
                          "mutability": "mutable",
                          "name": "z",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 606,
                          "src": "1792:9:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 578,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1792:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 581,
                      "initialValue": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 580,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1804:1:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1792:13:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 598,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 583,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 573,
                                "src": "1823:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1828:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1823:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 597,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 594,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 591,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 586,
                                        "name": "z",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 579,
                                        "src": "1834:1:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 590,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 587,
                                            "name": "self",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 571,
                                            "src": "1838:4:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                              "typeString": "struct FixedPoint.uq112x112 memory"
                                            }
                                          },
                                          "id": 588,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "_x",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 487,
                                          "src": "1838:7:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint224",
                                            "typeString": "uint224"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 589,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 573,
                                          "src": "1848:1:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "1838:11:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1834:15:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 592,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1833:17:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 593,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 573,
                                  "src": "1853:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1833:21:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 595,
                                  "name": "self",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 571,
                                  "src": "1858:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                    "typeString": "struct FixedPoint.uq112x112 memory"
                                  }
                                },
                                "id": 596,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_x",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 487,
                                "src": "1858:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint224",
                                  "typeString": "uint224"
                                }
                              },
                              "src": "1833:32:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1823:42:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a6d756c3a206f766572666c6f77",
                            "id": 599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1867:27:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4948de739aba85946a14984f472451f25a4920e9fae93fb8ed011d3024f8abcf",
                              "typeString": "literal_string \"FixedPoint::mul: overflow\""
                            },
                            "value": "FixedPoint::mul: overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4948de739aba85946a14984f472451f25a4920e9fae93fb8ed011d3024f8abcf",
                              "typeString": "literal_string \"FixedPoint::mul: overflow\""
                            }
                          ],
                          "id": 582,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1815:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1815:80:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 601,
                      "nodeType": "ExpressionStatement",
                      "src": "1815:80:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 603,
                            "name": "z",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 579,
                            "src": "1922:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 602,
                          "name": "uq144x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 491,
                          "src": "1912:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq144x112_$491_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq144x112 storage pointer)"
                          }
                        },
                        "id": 604,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1912:12:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$491_memory_ptr",
                          "typeString": "struct FixedPoint.uq144x112 memory"
                        }
                      },
                      "functionReturnParameters": 577,
                      "id": 605,
                      "nodeType": "Return",
                      "src": "1905:19:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 607,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mul",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 574,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 571,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 607,
                      "src": "1707:21:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 570,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 488,
                        "src": "1707:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 573,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 607,
                      "src": "1730:9:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 572,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1730:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1706:34:2"
                },
                "returnParameters": {
                  "id": 577,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 576,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 607,
                      "src": "1764:16:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq144x112_$491_memory_ptr",
                        "typeString": "struct FixedPoint.uq144x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 575,
                        "name": "uq144x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 491,
                        "src": "1764:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$491_storage_ptr",
                          "typeString": "struct FixedPoint.uq144x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1763:18:2"
                },
                "scope": 1109,
                "src": "1694:237:2",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 658,
                  "nodeType": "Block",
                  "src": "2109:190:2",
                  "statements": [
                    {
                      "assignments": [
                        617
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 617,
                          "mutability": "mutable",
                          "name": "z",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 658,
                          "src": "2119:9:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 616,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2119:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 634,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 620,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 609,
                              "src": "2147:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "id": 621,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_x",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 487,
                            "src": "2147:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 626,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 624,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 611,
                                    "src": "2164:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 625,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2168:1:2",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "2164:5:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "id": 629,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 611,
                                  "src": "2177:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 630,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "2164:14:2",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "id": 628,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "2172:2:2",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "id": 627,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 611,
                                    "src": "2173:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2156:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 622,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2156:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2156:23:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 632,
                            "name": "Q112",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 497,
                            "src": "2181:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 618,
                            "name": "FullMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1330,
                            "src": "2131:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FullMath_$1330_$",
                              "typeString": "type(library FullMath)"
                            }
                          },
                          "id": 619,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mulDiv",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1329,
                          "src": "2131:15:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 633,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2131:55:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2119:67:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 640,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 636,
                              "name": "z",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 617,
                              "src": "2204:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                                "typeString": "int_const 5789...(69 digits omitted)...9968"
                              },
                              "id": 639,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 637,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2208:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "323535",
                                "id": 638,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2211:3:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_255_by_1",
                                  "typeString": "int_const 255"
                                },
                                "value": "255"
                              },
                              "src": "2208:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                                "typeString": "int_const 5789...(69 digits omitted)...9968"
                              }
                            },
                            "src": "2204:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a6d756c693a206f766572666c6f77",
                            "id": 641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2216:28:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a352085f3dae8adf2989a66ed19b1d5cfc2957ebdd82dbbc3ae8101610d3fd00",
                              "typeString": "literal_string \"FixedPoint::muli: overflow\""
                            },
                            "value": "FixedPoint::muli: overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_a352085f3dae8adf2989a66ed19b1d5cfc2957ebdd82dbbc3ae8101610d3fd00",
                              "typeString": "literal_string \"FixedPoint::muli: overflow\""
                            }
                          ],
                          "id": 635,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2196:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 642,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2196:49:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 643,
                      "nodeType": "ExpressionStatement",
                      "src": "2196:49:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 644,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 611,
                            "src": "2262:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 645,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2266:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2262:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 654,
                              "name": "z",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 617,
                              "src": "2290:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 653,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2283:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 652,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2283:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 655,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2283:9:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "2262:30:2",
                        "trueExpression": {
                          "argumentTypes": null,
                          "id": 651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "-",
                          "prefix": true,
                          "src": "2270:10:2",
                          "subExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 649,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 617,
                                "src": "2278:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2271:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 647,
                                "name": "int256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2271:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 650,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2271:9:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "functionReturnParameters": 615,
                      "id": 657,
                      "nodeType": "Return",
                      "src": "2255:37:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 659,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "muli",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 612,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 609,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 659,
                      "src": "2045:21:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 608,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 488,
                        "src": "2045:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 611,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 659,
                      "src": "2068:8:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 610,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2068:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2044:33:2"
                },
                "returnParameters": {
                  "id": 615,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 614,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 659,
                      "src": "2101:6:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 613,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2101:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2100:8:2"
                },
                "scope": 1109,
                "src": "2031:268:2",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 806,
                  "nodeType": "Block",
                  "src": "2487:1160:2",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 676,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "id": 671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 668,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 661,
                              "src": "2501:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "id": 669,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_x",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 487,
                            "src": "2501:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 670,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2512:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2501:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "id": 675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 672,
                              "name": "other",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 663,
                              "src": "2517:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "id": 673,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_x",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 487,
                            "src": "2517:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 674,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2529:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2517:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2501:29:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 682,
                      "nodeType": "IfStatement",
                      "src": "2497:79:2",
                      "trueBody": {
                        "id": 681,
                        "nodeType": "Block",
                        "src": "2532:44:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 678,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2563:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 677,
                                "name": "uq112x112",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 488,
                                "src": "2553:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_uq112x112_$488_storage_ptr_$",
                                  "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                                }
                              },
                              "id": 679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2553:12:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "functionReturnParameters": 667,
                            "id": 680,
                            "nodeType": "Return",
                            "src": "2546:19:2"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        684
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 684,
                          "mutability": "mutable",
                          "name": "upper_self",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 806,
                          "src": "2585:18:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 683,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2585:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 692,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 690,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 687,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 661,
                                "src": "2614:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 688,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 487,
                              "src": "2614:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 689,
                              "name": "RESOLUTION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 494,
                              "src": "2625:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "2614:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2606:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint112_$",
                            "typeString": "type(uint112)"
                          },
                          "typeName": {
                            "id": 685,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2606:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 691,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2606:30:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2585:51:2"
                    },
                    {
                      "assignments": [
                        694
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 694,
                          "mutability": "mutable",
                          "name": "lower_self",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 806,
                          "src": "2655:18:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 693,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2655:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 702,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 700,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 697,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 661,
                                "src": "2684:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 698,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 487,
                              "src": "2684:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 699,
                              "name": "LOWER_MASK",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 503,
                              "src": "2694:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2684:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2676:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint112_$",
                            "typeString": "type(uint112)"
                          },
                          "typeName": {
                            "id": 695,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2676:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 701,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2676:29:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2655:50:2"
                    },
                    {
                      "assignments": [
                        704
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 704,
                          "mutability": "mutable",
                          "name": "upper_other",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 806,
                          "src": "2727:19:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 703,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2727:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 712,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 707,
                                "name": "other",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 663,
                                "src": "2757:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 708,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 487,
                              "src": "2757:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 709,
                              "name": "RESOLUTION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 494,
                              "src": "2769:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "2757:22:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2749:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint112_$",
                            "typeString": "type(uint112)"
                          },
                          "typeName": {
                            "id": 705,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2749:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 711,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2749:31:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2727:53:2"
                    },
                    {
                      "assignments": [
                        714
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 714,
                          "mutability": "mutable",
                          "name": "lower_other",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 806,
                          "src": "2799:19:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 713,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2799:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 722,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 717,
                                "name": "other",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 663,
                                "src": "2829:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 718,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 487,
                              "src": "2829:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 719,
                              "name": "LOWER_MASK",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 503,
                              "src": "2840:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2829:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2821:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint112_$",
                            "typeString": "type(uint112)"
                          },
                          "typeName": {
                            "id": 715,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2821:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 721,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2821:30:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2799:52:2"
                    },
                    {
                      "assignments": [
                        724
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 724,
                          "mutability": "mutable",
                          "name": "upper",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 806,
                          "src": "2902:13:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "typeName": {
                            "id": 723,
                            "name": "uint224",
                            "nodeType": "ElementaryTypeName",
                            "src": "2902:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 731,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        },
                        "id": 730,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 727,
                              "name": "upper_self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 684,
                              "src": "2926:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            ],
                            "id": 726,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2918:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint224_$",
                              "typeString": "type(uint224)"
                            },
                            "typeName": {
                              "id": 725,
                              "name": "uint224",
                              "nodeType": "ElementaryTypeName",
                              "src": "2918:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2918:19:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 729,
                          "name": "upper_other",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 704,
                          "src": "2940:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "src": "2918:33:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2902:49:2"
                    },
                    {
                      "assignments": [
                        733
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 733,
                          "mutability": "mutable",
                          "name": "lower",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 806,
                          "src": "2970:13:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "typeName": {
                            "id": 732,
                            "name": "uint224",
                            "nodeType": "ElementaryTypeName",
                            "src": "2970:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 740,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        },
                        "id": 739,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 736,
                              "name": "lower_self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 694,
                              "src": "2994:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            ],
                            "id": 735,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2986:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint224_$",
                              "typeString": "type(uint224)"
                            },
                            "typeName": {
                              "id": 734,
                              "name": "uint224",
                              "nodeType": "ElementaryTypeName",
                              "src": "2986:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2986:19:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 738,
                          "name": "lower_other",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 714,
                          "src": "3008:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "src": "2986:33:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2970:49:2"
                    },
                    {
                      "assignments": [
                        742
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 742,
                          "mutability": "mutable",
                          "name": "uppers_lowero",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 806,
                          "src": "3041:21:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "typeName": {
                            "id": 741,
                            "name": "uint224",
                            "nodeType": "ElementaryTypeName",
                            "src": "3041:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 749,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        },
                        "id": 748,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 745,
                              "name": "upper_self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 684,
                              "src": "3073:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            ],
                            "id": 744,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3065:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint224_$",
                              "typeString": "type(uint224)"
                            },
                            "typeName": {
                              "id": 743,
                              "name": "uint224",
                              "nodeType": "ElementaryTypeName",
                              "src": "3065:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3065:19:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 747,
                          "name": "lower_other",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 714,
                          "src": "3087:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "src": "3065:33:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3041:57:2"
                    },
                    {
                      "assignments": [
                        751
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 751,
                          "mutability": "mutable",
                          "name": "uppero_lowers",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 806,
                          "src": "3120:21:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "typeName": {
                            "id": 750,
                            "name": "uint224",
                            "nodeType": "ElementaryTypeName",
                            "src": "3120:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 758,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        },
                        "id": 757,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 754,
                              "name": "upper_other",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 704,
                              "src": "3152:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            ],
                            "id": 753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3144:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint224_$",
                              "typeString": "type(uint224)"
                            },
                            "typeName": {
                              "id": 752,
                              "name": "uint224",
                              "nodeType": "ElementaryTypeName",
                              "src": "3144:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 755,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3144:20:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 756,
                          "name": "lower_self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 694,
                          "src": "3167:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "src": "3144:33:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3120:57:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 766,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 760,
                              "name": "upper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 724,
                              "src": "3254:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 764,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "3271:2:2",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 763,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3272:1:2",
                                    "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": 762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3263:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint112_$",
                                  "typeString": "type(uint112)"
                                },
                                "typeName": {
                                  "id": 761,
                                  "name": "uint112",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3263:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 765,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3263:11:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "src": "3254:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a6d756c75713a207570706572206f766572666c6f77",
                            "id": 767,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3276:35:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b52493e04417af33ef99b1a68ac11af8712869fc1c194d72e6b0646c5968b5de",
                              "typeString": "literal_string \"FixedPoint::muluq: upper overflow\""
                            },
                            "value": "FixedPoint::muluq: upper overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_b52493e04417af33ef99b1a68ac11af8712869fc1c194d72e6b0646c5968b5de",
                              "typeString": "literal_string \"FixedPoint::muluq: upper overflow\""
                            }
                          ],
                          "id": 759,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3246:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 768,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3246:66:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 769,
                      "nodeType": "ExpressionStatement",
                      "src": "3246:66:2"
                    },
                    {
                      "assignments": [
                        771
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 771,
                          "mutability": "mutable",
                          "name": "sum",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 806,
                          "src": "3387:11:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 770,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3387:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 787,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 786,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 781,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 779,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  },
                                  "id": 776,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 774,
                                    "name": "upper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 724,
                                    "src": "3409:5:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint224",
                                      "typeString": "uint224"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 775,
                                    "name": "RESOLUTION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 494,
                                    "src": "3418:10:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "3409:19:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                ],
                                "id": 773,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3401:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 772,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3401:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 777,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3401:28:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 778,
                              "name": "uppers_lowero",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 742,
                              "src": "3432:13:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "src": "3401:44:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 780,
                            "name": "uppero_lowers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 751,
                            "src": "3448:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "src": "3401:60:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              },
                              "id": 784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 782,
                                "name": "lower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 733,
                                "src": "3465:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint224",
                                  "typeString": "uint224"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">>",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 783,
                                "name": "RESOLUTION",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 494,
                                "src": "3474:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "3465:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            }
                          ],
                          "id": 785,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3464:21:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "src": "3401:84:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3387:98:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 789,
                              "name": "sum",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 771,
                              "src": "3545:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 793,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "3560:2:2",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 792,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3561:1:2",
                                    "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": 791,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3552:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint224_$",
                                  "typeString": "type(uint224)"
                                },
                                "typeName": {
                                  "id": 790,
                                  "name": "uint224",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3552:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 794,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3552:11:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "src": "3545:18:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a6d756c75713a2073756d206f766572666c6f77",
                            "id": 796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3565:33:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a26cd9bd987e78cd1c5f6e66afec1e08b996885c9b9c44f1a5fd3a63466b2eff",
                              "typeString": "literal_string \"FixedPoint::muluq: sum overflow\""
                            },
                            "value": "FixedPoint::muluq: sum overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_a26cd9bd987e78cd1c5f6e66afec1e08b996885c9b9c44f1a5fd3a63466b2eff",
                              "typeString": "literal_string \"FixedPoint::muluq: sum overflow\""
                            }
                          ],
                          "id": 788,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3537:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 797,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3537:62:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 798,
                      "nodeType": "ExpressionStatement",
                      "src": "3537:62:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 802,
                                "name": "sum",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 771,
                                "src": "3635:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 801,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3627:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 800,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "3627:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 803,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3627:12:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 799,
                          "name": "uq112x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 488,
                          "src": "3617:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq112x112_$488_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                          }
                        },
                        "id": 804,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3617:23:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 667,
                      "id": 805,
                      "nodeType": "Return",
                      "src": "3610:30:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 807,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "muluq",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 664,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 661,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 807,
                      "src": "2399:21:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 660,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 488,
                        "src": "2399:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 663,
                      "mutability": "mutable",
                      "name": "other",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 807,
                      "src": "2422:22:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 662,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 488,
                        "src": "2422:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2398:47:2"
                },
                "returnParameters": {
                  "id": 667,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 666,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 807,
                      "src": "2469:16:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 665,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 488,
                        "src": "2469:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2468:18:2"
                },
                "scope": 1109,
                "src": "2384:1263:2",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 909,
                  "nodeType": "Block",
                  "src": "3820:590:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 817,
                                "name": "other",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 811,
                                "src": "3838:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 818,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 487,
                              "src": "3838:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3849:1:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "3838:12:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a64697675713a206469766973696f6e206279207a65726f",
                            "id": 821,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3852:37:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_422bc21f2eb91510a9cc7c0ead94b70d98345c9617c11cff466b9a69e8fa701d",
                              "typeString": "literal_string \"FixedPoint::divuq: division by zero\""
                            },
                            "value": "FixedPoint::divuq: division by zero"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_422bc21f2eb91510a9cc7c0ead94b70d98345c9617c11cff466b9a69e8fa701d",
                              "typeString": "literal_string \"FixedPoint::divuq: division by zero\""
                            }
                          ],
                          "id": 816,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3830:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 822,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3830:60:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 823,
                      "nodeType": "ExpressionStatement",
                      "src": "3830:60:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        },
                        "id": 828,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 824,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 809,
                            "src": "3904:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                              "typeString": "struct FixedPoint.uq112x112 memory"
                            }
                          },
                          "id": 825,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_x",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 487,
                          "src": "3904:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 826,
                            "name": "other",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 811,
                            "src": "3915:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                              "typeString": "struct FixedPoint.uq112x112 memory"
                            }
                          },
                          "id": 827,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_x",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 487,
                          "src": "3915:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "src": "3904:19:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 837,
                      "nodeType": "IfStatement",
                      "src": "3900:81:2",
                      "trueBody": {
                        "id": 836,
                        "nodeType": "Block",
                        "src": "3925:56:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 832,
                                      "name": "Q112",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 497,
                                      "src": "3964:4:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 831,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3956:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint224_$",
                                      "typeString": "type(uint224)"
                                    },
                                    "typeName": {
                                      "id": 830,
                                      "name": "uint224",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3956:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 833,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3956:13:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                ],
                                "id": 829,
                                "name": "uq112x112",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 488,
                                "src": "3946:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_uq112x112_$488_storage_ptr_$",
                                  "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                                }
                              },
                              "id": 834,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3946:24:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "functionReturnParameters": 815,
                            "id": 835,
                            "nodeType": "Return",
                            "src": "3939:31:2"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        },
                        "id": 845,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 838,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 809,
                            "src": "3994:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                              "typeString": "struct FixedPoint.uq112x112 memory"
                            }
                          },
                          "id": 839,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_x",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 487,
                          "src": "3994:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 843,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "4013:2:2",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 842,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4014:1:2",
                                "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": 841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4005:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint144_$",
                              "typeString": "type(uint144)"
                            },
                            "typeName": {
                              "id": 840,
                              "name": "uint144",
                              "nodeType": "ElementaryTypeName",
                              "src": "4005:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4005:11:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint144",
                            "typeString": "uint144"
                          }
                        },
                        "src": "3994:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 879,
                      "nodeType": "IfStatement",
                      "src": "3990:232:2",
                      "trueBody": {
                        "id": 878,
                        "nodeType": "Block",
                        "src": "4018:204:2",
                        "statements": [
                          {
                            "assignments": [
                              847
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 847,
                                "mutability": "mutable",
                                "name": "value",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 878,
                                "src": "4032:13:2",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 846,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4032:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 859,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 858,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 854,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 850,
                                            "name": "self",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 809,
                                            "src": "4057:4:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                              "typeString": "struct FixedPoint.uq112x112 memory"
                                            }
                                          },
                                          "id": 851,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "_x",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 487,
                                          "src": "4057:7:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint224",
                                            "typeString": "uint224"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint224",
                                            "typeString": "uint224"
                                          }
                                        ],
                                        "id": 849,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "4049:7:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 848,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "4049:7:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 852,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4049:16:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 853,
                                      "name": "RESOLUTION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 494,
                                      "src": "4069:10:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "4049:30:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 855,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4048:32:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 856,
                                  "name": "other",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 811,
                                  "src": "4083:5:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                    "typeString": "struct FixedPoint.uq112x112 memory"
                                  }
                                },
                                "id": 857,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_x",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 487,
                                "src": "4083:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint224",
                                  "typeString": "uint224"
                                }
                              },
                              "src": "4048:43:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "4032:59:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 867,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 861,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 847,
                                    "src": "4113:5:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 865,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "4130:2:2",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 864,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4131:1:2",
                                          "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": 863,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4122:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint224_$",
                                        "typeString": "type(uint224)"
                                      },
                                      "typeName": {
                                        "id": 862,
                                        "name": "uint224",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4122:7:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 866,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4122:11:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint224",
                                      "typeString": "uint224"
                                    }
                                  },
                                  "src": "4113:20:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "4669786564506f696e743a3a64697675713a206f766572666c6f77",
                                  "id": 868,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4135:29:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_3f2635ef6119740811945e2425893e62b117b25251f7d0aaa9a8ce883079e0ad",
                                    "typeString": "literal_string \"FixedPoint::divuq: overflow\""
                                  },
                                  "value": "FixedPoint::divuq: overflow"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_3f2635ef6119740811945e2425893e62b117b25251f7d0aaa9a8ce883079e0ad",
                                    "typeString": "literal_string \"FixedPoint::divuq: overflow\""
                                  }
                                ],
                                "id": 860,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "4105:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 869,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4105:60:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 870,
                            "nodeType": "ExpressionStatement",
                            "src": "4105:60:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 874,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 847,
                                      "src": "4204:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 873,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4196:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint224_$",
                                      "typeString": "type(uint224)"
                                    },
                                    "typeName": {
                                      "id": 872,
                                      "name": "uint224",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4196:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 875,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4196:14:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                ],
                                "id": 871,
                                "name": "uq112x112",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 488,
                                "src": "4186:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_uq112x112_$488_storage_ptr_$",
                                  "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                                }
                              },
                              "id": 876,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4186:25:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "functionReturnParameters": 815,
                            "id": 877,
                            "nodeType": "Return",
                            "src": "4179:32:2"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        881
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 881,
                          "mutability": "mutable",
                          "name": "result",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 909,
                          "src": "4232:14:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 880,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4232:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 890,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 884,
                            "name": "Q112",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 497,
                            "src": "4265:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 885,
                              "name": "self",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 809,
                              "src": "4271:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "id": 886,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_x",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 487,
                            "src": "4271:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 887,
                              "name": "other",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 811,
                              "src": "4280:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "id": 888,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_x",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 487,
                            "src": "4280:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 882,
                            "name": "FullMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1330,
                            "src": "4249:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FullMath_$1330_$",
                              "typeString": "type(library FullMath)"
                            }
                          },
                          "id": 883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mulDiv",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1329,
                          "src": "4249:15:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 889,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4249:40:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4232:57:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 892,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 881,
                              "src": "4307:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 896,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "4325:2:2",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 895,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4326:1:2",
                                    "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": 894,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4317:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint224_$",
                                  "typeString": "type(uint224)"
                                },
                                "typeName": {
                                  "id": 893,
                                  "name": "uint224",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4317:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 897,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4317:11:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "src": "4307:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a64697675713a206f766572666c6f77",
                            "id": 899,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4330:29:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3f2635ef6119740811945e2425893e62b117b25251f7d0aaa9a8ce883079e0ad",
                              "typeString": "literal_string \"FixedPoint::divuq: overflow\""
                            },
                            "value": "FixedPoint::divuq: overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3f2635ef6119740811945e2425893e62b117b25251f7d0aaa9a8ce883079e0ad",
                              "typeString": "literal_string \"FixedPoint::divuq: overflow\""
                            }
                          ],
                          "id": 891,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4299:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 900,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4299:61:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 901,
                      "nodeType": "ExpressionStatement",
                      "src": "4299:61:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 905,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 881,
                                "src": "4395:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 904,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4387:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 903,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "4387:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 906,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4387:15:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 902,
                          "name": "uq112x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 488,
                          "src": "4377:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq112x112_$488_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                          }
                        },
                        "id": 907,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4377:26:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 815,
                      "id": 908,
                      "nodeType": "Return",
                      "src": "4370:33:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 910,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "divuq",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 812,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 809,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 910,
                      "src": "3732:21:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 808,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 488,
                        "src": "3732:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 811,
                      "mutability": "mutable",
                      "name": "other",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 910,
                      "src": "3755:22:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 810,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 488,
                        "src": "3755:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3731:47:2"
                },
                "returnParameters": {
                  "id": 815,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 814,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 910,
                      "src": "3802:16:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 813,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 488,
                        "src": "3802:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3801:18:2"
                },
                "scope": 1109,
                "src": "3717:693:2",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 999,
                  "nodeType": "Block",
                  "src": "4625:607:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 922,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 920,
                              "name": "denominator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 914,
                              "src": "4643:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 921,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4657:1:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "4643:15:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f",
                            "id": 923,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4660:40:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5e8a6c8dfacd0a41f2501735d8ee26d996b9e7e81ff5467dfdfd11a3728a15e7",
                              "typeString": "literal_string \"FixedPoint::fraction: division by zero\""
                            },
                            "value": "FixedPoint::fraction: division by zero"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_5e8a6c8dfacd0a41f2501735d8ee26d996b9e7e81ff5467dfdfd11a3728a15e7",
                              "typeString": "literal_string \"FixedPoint::fraction: division by zero\""
                            }
                          ],
                          "id": 919,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4635:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 924,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4635:66:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 925,
                      "nodeType": "ExpressionStatement",
                      "src": "4635:66:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 928,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 926,
                          "name": "numerator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 912,
                          "src": "4715:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4728:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4715:14:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 934,
                      "nodeType": "IfStatement",
                      "src": "4711:50:2",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 931,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4759:1:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 929,
                              "name": "FixedPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1109,
                              "src": "4738:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1109_$",
                                "typeString": "type(library FixedPoint)"
                              }
                            },
                            "id": 930,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "uq112x112",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 488,
                            "src": "4738:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_uq112x112_$488_storage_ptr_$",
                              "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                            }
                          },
                          "id": 932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4738:23:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                            "typeString": "struct FixedPoint.uq112x112 memory"
                          }
                        },
                        "functionReturnParameters": 918,
                        "id": 933,
                        "nodeType": "Return",
                        "src": "4731:30:2"
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 941,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 935,
                          "name": "numerator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 912,
                          "src": "4776:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 939,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "4797:2:2",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 938,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4798:1:2",
                                "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": 937,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4789:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint144_$",
                              "typeString": "type(uint144)"
                            },
                            "typeName": {
                              "id": 936,
                              "name": "uint144",
                              "nodeType": "ElementaryTypeName",
                              "src": "4789:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4789:11:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint144",
                            "typeString": "uint144"
                          }
                        },
                        "src": "4776:24:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 997,
                        "nodeType": "Block",
                        "src": "5014:212:2",
                        "statements": [
                          {
                            "assignments": [
                              971
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 971,
                                "mutability": "mutable",
                                "name": "result",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 997,
                                "src": "5028:14:2",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 970,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5028:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 978,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 974,
                                  "name": "numerator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 912,
                                  "src": "5061:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 975,
                                  "name": "Q112",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 497,
                                  "src": "5072:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 976,
                                  "name": "denominator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 914,
                                  "src": "5078:11:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 972,
                                  "name": "FullMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1330,
                                  "src": "5045:8:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_FullMath_$1330_$",
                                    "typeString": "type(library FullMath)"
                                  }
                                },
                                "id": 973,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mulDiv",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1329,
                                "src": "5045:15:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 977,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5045:45:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "5028:62:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 986,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 980,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 971,
                                    "src": "5112:6:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 984,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "5130:2:2",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 983,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5131:1:2",
                                          "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": 982,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5122:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint224_$",
                                        "typeString": "type(uint224)"
                                      },
                                      "typeName": {
                                        "id": 981,
                                        "name": "uint224",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5122:7:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 985,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5122:11:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint224",
                                      "typeString": "uint224"
                                    }
                                  },
                                  "src": "5112:21:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f77",
                                  "id": 987,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5135:32:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9fe8d10e95984e9ccfd1797a961d8375075b4df29dfe16192bd5e7445ed87d53",
                                    "typeString": "literal_string \"FixedPoint::fraction: overflow\""
                                  },
                                  "value": "FixedPoint::fraction: overflow"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_9fe8d10e95984e9ccfd1797a961d8375075b4df29dfe16192bd5e7445ed87d53",
                                    "typeString": "literal_string \"FixedPoint::fraction: overflow\""
                                  }
                                ],
                                "id": 979,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "5104:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 988,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5104:64:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 989,
                            "nodeType": "ExpressionStatement",
                            "src": "5104:64:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 993,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 971,
                                      "src": "5207:6:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 992,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5199:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint224_$",
                                      "typeString": "type(uint224)"
                                    },
                                    "typeName": {
                                      "id": 991,
                                      "name": "uint224",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5199:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 994,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5199:15:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                ],
                                "id": 990,
                                "name": "uq112x112",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 488,
                                "src": "5189:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_uq112x112_$488_storage_ptr_$",
                                  "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                                }
                              },
                              "id": 995,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5189:26:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "functionReturnParameters": 918,
                            "id": 996,
                            "nodeType": "Return",
                            "src": "5182:33:2"
                          }
                        ]
                      },
                      "id": 998,
                      "nodeType": "IfStatement",
                      "src": "4772:454:2",
                      "trueBody": {
                        "id": 969,
                        "nodeType": "Block",
                        "src": "4802:206:2",
                        "statements": [
                          {
                            "assignments": [
                              943
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 943,
                                "mutability": "mutable",
                                "name": "result",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 969,
                                "src": "4816:14:2",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 942,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4816:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 950,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 949,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 946,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 944,
                                      "name": "numerator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 912,
                                      "src": "4834:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 945,
                                      "name": "RESOLUTION",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 494,
                                      "src": "4847:10:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "4834:23:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 947,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4833:25:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 948,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 914,
                                "src": "4861:11:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4833:39:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "4816:56:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 958,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 952,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 943,
                                    "src": "4894:6:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 956,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "4912:2:2",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 955,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4913:1:2",
                                          "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": 954,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4904:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint224_$",
                                        "typeString": "type(uint224)"
                                      },
                                      "typeName": {
                                        "id": 953,
                                        "name": "uint224",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4904:7:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 957,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4904:11:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint224",
                                      "typeString": "uint224"
                                    }
                                  },
                                  "src": "4894:21:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f77",
                                  "id": 959,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4917:32:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9fe8d10e95984e9ccfd1797a961d8375075b4df29dfe16192bd5e7445ed87d53",
                                    "typeString": "literal_string \"FixedPoint::fraction: overflow\""
                                  },
                                  "value": "FixedPoint::fraction: overflow"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_9fe8d10e95984e9ccfd1797a961d8375075b4df29dfe16192bd5e7445ed87d53",
                                    "typeString": "literal_string \"FixedPoint::fraction: overflow\""
                                  }
                                ],
                                "id": 951,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "4886:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4886:64:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 961,
                            "nodeType": "ExpressionStatement",
                            "src": "4886:64:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 965,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 943,
                                      "src": "4989:6:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 964,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4981:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint224_$",
                                      "typeString": "type(uint224)"
                                    },
                                    "typeName": {
                                      "id": 963,
                                      "name": "uint224",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4981:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 966,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4981:15:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                ],
                                "id": 962,
                                "name": "uq112x112",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 488,
                                "src": "4971:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_uq112x112_$488_storage_ptr_$",
                                  "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                                }
                              },
                              "id": 967,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4971:26:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "functionReturnParameters": 918,
                            "id": 968,
                            "nodeType": "Return",
                            "src": "4964:33:2"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 1000,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "fraction",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 915,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 912,
                      "mutability": "mutable",
                      "name": "numerator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1000,
                      "src": "4544:17:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 911,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4544:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 914,
                      "mutability": "mutable",
                      "name": "denominator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1000,
                      "src": "4563:19:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 913,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4563:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4543:40:2"
                },
                "returnParameters": {
                  "id": 918,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 917,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1000,
                      "src": "4607:16:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 916,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 488,
                        "src": "4607:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4606:18:2"
                },
                "scope": 1109,
                "src": "4526:706:2",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1033,
                  "nodeType": "Block",
                  "src": "5404:202:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 1011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1008,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1002,
                                "src": "5422:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 1009,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 487,
                              "src": "5422:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1010,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5433:1:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5422:12:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a7265636970726f63616c3a207265636970726f63616c206f66207a65726f",
                            "id": 1012,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5436:44:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d3029a5a93a398fe526ba88b78683cb8409b11161a7a6252d5ccb5c8f4f8aea1",
                              "typeString": "literal_string \"FixedPoint::reciprocal: reciprocal of zero\""
                            },
                            "value": "FixedPoint::reciprocal: reciprocal of zero"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d3029a5a93a398fe526ba88b78683cb8409b11161a7a6252d5ccb5c8f4f8aea1",
                              "typeString": "literal_string \"FixedPoint::reciprocal: reciprocal of zero\""
                            }
                          ],
                          "id": 1007,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5414:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1013,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5414:67:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1014,
                      "nodeType": "ExpressionStatement",
                      "src": "5414:67:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 1019,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1016,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1002,
                                "src": "5499:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 1017,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 487,
                              "src": "5499:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 1018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5510:1:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "5499:12:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a3a7265636970726f63616c3a206f766572666c6f77",
                            "id": 1020,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5513:34:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d0c2f767026b31296fb6fcaacdf9d3529986be99f9a71f7d756dd15015fdbac1",
                              "typeString": "literal_string \"FixedPoint::reciprocal: overflow\""
                            },
                            "value": "FixedPoint::reciprocal: overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d0c2f767026b31296fb6fcaacdf9d3529986be99f9a71f7d756dd15015fdbac1",
                              "typeString": "literal_string \"FixedPoint::reciprocal: overflow\""
                            }
                          ],
                          "id": 1015,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5491:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1021,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5491:57:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1022,
                      "nodeType": "ExpressionStatement",
                      "src": "5491:57:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1026,
                                  "name": "Q224",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 500,
                                  "src": "5583:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1027,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1002,
                                    "src": "5590:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                      "typeString": "struct FixedPoint.uq112x112 memory"
                                    }
                                  },
                                  "id": 1028,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_x",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 487,
                                  "src": "5590:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                },
                                "src": "5583:14:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5575:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 1024,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "5575:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5575:23:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 1023,
                          "name": "uq112x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 488,
                          "src": "5565:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq112x112_$488_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                          }
                        },
                        "id": 1031,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5565:34:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 1006,
                      "id": 1032,
                      "nodeType": "Return",
                      "src": "5558:41:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1034,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "reciprocal",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1003,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1002,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1034,
                      "src": "5340:21:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1001,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 488,
                        "src": "5340:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5339:23:2"
                },
                "returnParameters": {
                  "id": 1006,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1005,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1034,
                      "src": "5386:16:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1004,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 488,
                        "src": "5386:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5385:18:2"
                },
                "scope": 1109,
                "src": "5320:286:2",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1107,
                  "nodeType": "Block",
                  "src": "5761:372:2",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        },
                        "id": 1048,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1041,
                            "name": "self",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1036,
                            "src": "5775:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                              "typeString": "struct FixedPoint.uq112x112 memory"
                            }
                          },
                          "id": 1042,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_x",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 487,
                          "src": "5775:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1046,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "5794:2:2",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 1045,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5795:1:2",
                                "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": 1044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5786:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint144_$",
                              "typeString": "type(uint144)"
                            },
                            "typeName": {
                              "id": 1043,
                              "name": "uint144",
                              "nodeType": "ElementaryTypeName",
                              "src": "5786:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 1047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5786:11:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint144",
                            "typeString": "uint144"
                          }
                        },
                        "src": "5775:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1066,
                      "nodeType": "IfStatement",
                      "src": "5771:120:2",
                      "trueBody": {
                        "id": 1065,
                        "nodeType": "Block",
                        "src": "5799:92:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 1060,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 1056,
                                                  "name": "self",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1036,
                                                  "src": "5862:4:2",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                                    "typeString": "struct FixedPoint.uq112x112 memory"
                                                  }
                                                },
                                                "id": 1057,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "_x",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 487,
                                                "src": "5862:7:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint224",
                                                  "typeString": "uint224"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint224",
                                                  "typeString": "uint224"
                                                }
                                              ],
                                              "id": 1055,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "5854:7:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 1054,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5854:7:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            },
                                            "id": 1058,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5854:16:2",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "313132",
                                            "id": 1059,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5874:3:2",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_112_by_1",
                                              "typeString": "int_const 112"
                                            },
                                            "value": "112"
                                          },
                                          "src": "5854:23:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1052,
                                          "name": "Babylonian",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 202,
                                          "src": "5838:10:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_Babylonian_$202_$",
                                            "typeString": "type(library Babylonian)"
                                          }
                                        },
                                        "id": 1053,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sqrt",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 201,
                                        "src": "5838:15:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 1061,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5838:40:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1051,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5830:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint224_$",
                                      "typeString": "type(uint224)"
                                    },
                                    "typeName": {
                                      "id": 1050,
                                      "name": "uint224",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5830:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1062,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5830:49:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                ],
                                "id": 1049,
                                "name": "uq112x112",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 488,
                                "src": "5820:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_struct$_uq112x112_$488_storage_ptr_$",
                                  "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                                }
                              },
                              "id": 1063,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "structConstructorCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5820:60:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                "typeString": "struct FixedPoint.uq112x112 memory"
                              }
                            },
                            "functionReturnParameters": 1040,
                            "id": 1064,
                            "nodeType": "Return",
                            "src": "5813:67:2"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        1068
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1068,
                          "mutability": "mutable",
                          "name": "safeShiftBits",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1107,
                          "src": "5901:19:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "typeName": {
                            "id": 1067,
                            "name": "uint8",
                            "nodeType": "ElementaryTypeName",
                            "src": "5901:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1076,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 1075,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "hexValue": "323535",
                          "id": 1069,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5923:3:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_255_by_1",
                            "typeString": "int_const 255"
                          },
                          "value": "255"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1072,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1036,
                                "src": "5956:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 1073,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 487,
                              "src": "5956:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1070,
                              "name": "BitMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 480,
                              "src": "5929:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_BitMath_$480_$",
                                "typeString": "type(library BitMath)"
                              }
                            },
                            "id": 1071,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mostSignificantBit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 318,
                            "src": "5929:26:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$",
                              "typeString": "function (uint256) pure returns (uint8)"
                            }
                          },
                          "id": 1074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5929:35:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "5923:41:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5901:63:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1081,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1077,
                          "name": "safeShiftBits",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1068,
                          "src": "5974:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 1080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1078,
                            "name": "safeShiftBits",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1068,
                            "src": "5991:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "%",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6007:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "5991:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "5974:34:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 1082,
                      "nodeType": "ExpressionStatement",
                      "src": "5974:34:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1103,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1094,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1090,
                                              "name": "self",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1036,
                                              "src": "6067:4:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                                "typeString": "struct FixedPoint.uq112x112 memory"
                                              }
                                            },
                                            "id": 1091,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "_x",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 487,
                                            "src": "6067:7:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint224",
                                              "typeString": "uint224"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint224",
                                              "typeString": "uint224"
                                            }
                                          ],
                                          "id": 1089,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "6059:7:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 1088,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "6059:7:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": null,
                                              "typeString": null
                                            }
                                          }
                                        },
                                        "id": 1092,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6059:16:2",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<<",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 1093,
                                        "name": "safeShiftBits",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1068,
                                        "src": "6079:13:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "src": "6059:33:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1086,
                                      "name": "Babylonian",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 202,
                                      "src": "6043:10:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Babylonian_$202_$",
                                        "typeString": "type(library Babylonian)"
                                      }
                                    },
                                    "id": 1087,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sqrt",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 201,
                                    "src": "6043:15:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 1095,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6043:50:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "id": 1101,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            },
                                            "id": 1098,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "313132",
                                              "id": 1096,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "6099:3:2",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_112_by_1",
                                                "typeString": "int_const 112"
                                              },
                                              "value": "112"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 1097,
                                              "name": "safeShiftBits",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1068,
                                              "src": "6105:13:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "src": "6099:19:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          }
                                        ],
                                        "id": 1099,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "6098:21:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 1100,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6122:1:2",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "6098:25:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    }
                                  ],
                                  "id": 1102,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "6097:27:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "6043:81:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1085,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6035:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 1084,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "6035:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6035:90:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 1083,
                          "name": "uq112x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 488,
                          "src": "6025:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq112x112_$488_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                          }
                        },
                        "id": 1105,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6025:101:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 1040,
                      "id": 1106,
                      "nodeType": "Return",
                      "src": "6018:108:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1108,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sqrt",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1037,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1036,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1108,
                      "src": "5697:21:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1035,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 488,
                        "src": "5697:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5696:23:2"
                },
                "returnParameters": {
                  "id": 1040,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1039,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1108,
                      "src": "5743:16:2",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1038,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 488,
                        "src": "5743:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5742:18:2"
                },
                "scope": 1109,
                "src": "5683:450:2",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 1110,
            "src": "251:5884:2"
          }
        ],
        "src": "45:6091:2"
      }
    },
    "@marx-dex/marx-dex-lib/contracts/libraries/FullMath.sol": {
      "id": 3,
      "AST": {
        "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/FullMath.sol",
        "exportedSymbols": {
          "FullMath": [
            1330
          ]
        },
        "id": 1331,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1111,
            "literals": [
              "solidity",
              ">=",
              "0.4",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "38:24:3"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 1330,
            "linearizedBaseContracts": [
              1330
            ],
            "name": "FullMath",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 1154,
                  "nodeType": "Block",
                  "src": "300:122:3",
                  "statements": [
                    {
                      "assignments": [
                        1123
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1123,
                          "mutability": "mutable",
                          "name": "mm",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1154,
                          "src": "310:10:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1122,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "310:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1133,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1125,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1113,
                            "src": "330:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1126,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1115,
                            "src": "333:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "344:2:3",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1129,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "345:1:3",
                                  "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": 1128,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "336:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 1127,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "336:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "336:11:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1124,
                          "name": "mulmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -16,
                          "src": "323:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1132,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "323:25:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "310:38:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1138,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1134,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1118,
                          "src": "358:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1135,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1113,
                            "src": "362:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1136,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1115,
                            "src": "366:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "362:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "358:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1139,
                      "nodeType": "ExpressionStatement",
                      "src": "358:9:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1144,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1140,
                          "name": "h",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1120,
                          "src": "377:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1141,
                            "name": "mm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1123,
                            "src": "381:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1142,
                            "name": "l",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1118,
                            "src": "386:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "381:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "377:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1145,
                      "nodeType": "ExpressionStatement",
                      "src": "377:10:3"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1148,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1146,
                          "name": "mm",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1123,
                          "src": "401:2:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1147,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1118,
                          "src": "406:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "401:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1153,
                      "nodeType": "IfStatement",
                      "src": "397:18:3",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1149,
                            "name": "h",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1120,
                            "src": "409:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1150,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "414:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "409:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1152,
                        "nodeType": "ExpressionStatement",
                        "src": "409:6:3"
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 1155,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "fullMul",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1116,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1113,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1155,
                      "src": "233:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1112,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "233:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1115,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1155,
                      "src": "244:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1114,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "244:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "232:22:3"
                },
                "returnParameters": {
                  "id": 1121,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1118,
                      "mutability": "mutable",
                      "name": "l",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1155,
                      "src": "278:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1117,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "278:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1120,
                      "mutability": "mutable",
                      "name": "h",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1155,
                      "src": "289:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1119,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "289:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "277:22:3"
                },
                "scope": 1330,
                "src": "216:206:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1266,
                  "nodeType": "Block",
                  "src": "539:352:3",
                  "statements": [
                    {
                      "assignments": [
                        1167
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1167,
                          "mutability": "mutable",
                          "name": "pow2",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1266,
                          "src": "549:12:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1166,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "549:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1172,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1171,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1168,
                          "name": "d",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1161,
                          "src": "564:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "-",
                          "prefix": true,
                          "src": "568:2:3",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 1169,
                            "name": "d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1161,
                            "src": "569:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "564:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "549:21:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1175,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1173,
                          "name": "d",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1161,
                          "src": "580:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "/=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1174,
                          "name": "pow2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "585:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "580:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1176,
                      "nodeType": "ExpressionStatement",
                      "src": "580:9:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1179,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1177,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1157,
                          "src": "599:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "/=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1178,
                          "name": "pow2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1167,
                          "src": "604:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "599:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1180,
                      "nodeType": "ExpressionStatement",
                      "src": "599:9:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1192,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1181,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1157,
                          "src": "618:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1182,
                            "name": "h",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1159,
                            "src": "623:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1189,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1187,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1184,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "629:5:3",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "id": 1183,
                                          "name": "pow2",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1167,
                                          "src": "630:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 1185,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "628:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 1186,
                                    "name": "pow2",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1167,
                                    "src": "638:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "628:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1188,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "645:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "628:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 1190,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "627:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "623:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "618:29:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1193,
                      "nodeType": "ExpressionStatement",
                      "src": "618:29:3"
                    },
                    {
                      "assignments": [
                        1195
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1195,
                          "mutability": "mutable",
                          "name": "r",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1266,
                          "src": "657:9:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1194,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "657:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1197,
                      "initialValue": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1196,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "669:1:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "657:13:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1204,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1198,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1195,
                          "src": "680:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1199,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "685:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1202,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1200,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1161,
                              "src": "689:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1201,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1195,
                              "src": "693:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "689:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "685:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "680:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1205,
                      "nodeType": "ExpressionStatement",
                      "src": "680:14:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1212,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1206,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1195,
                          "src": "704:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "709:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1210,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1208,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1161,
                              "src": "713:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1209,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1195,
                              "src": "717:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "713:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "709:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "704:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1213,
                      "nodeType": "ExpressionStatement",
                      "src": "704:14:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1214,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1195,
                          "src": "728:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "733:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1216,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1161,
                              "src": "737:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1217,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1195,
                              "src": "741:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "737:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "733:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "728:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1221,
                      "nodeType": "ExpressionStatement",
                      "src": "728:14:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1222,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1195,
                          "src": "752:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1223,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "757:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1224,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1161,
                              "src": "761:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1225,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1195,
                              "src": "765:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "761:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "757:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "752:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1229,
                      "nodeType": "ExpressionStatement",
                      "src": "752:14:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1236,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1230,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1195,
                          "src": "776:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "781:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1232,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1161,
                              "src": "785:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1233,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1195,
                              "src": "789:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "785:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "781:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "776:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1237,
                      "nodeType": "ExpressionStatement",
                      "src": "776:14:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1244,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1238,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1195,
                          "src": "800:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "805:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1242,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1240,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1161,
                              "src": "809:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1241,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1195,
                              "src": "813:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "809:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "805:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "800:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1245,
                      "nodeType": "ExpressionStatement",
                      "src": "800:14:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1252,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1246,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1195,
                          "src": "824:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1247,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "829:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1250,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1248,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1161,
                              "src": "833:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1249,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1195,
                              "src": "837:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "833:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "829:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "824:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1253,
                      "nodeType": "ExpressionStatement",
                      "src": "824:14:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1254,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1195,
                          "src": "848:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 1255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "853:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1258,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1256,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1161,
                              "src": "857:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1257,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1195,
                              "src": "861:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "857:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "853:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "848:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1261,
                      "nodeType": "ExpressionStatement",
                      "src": "848:14:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1264,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1262,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1157,
                          "src": "879:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1263,
                          "name": "r",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1195,
                          "src": "883:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "879:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1165,
                      "id": 1265,
                      "nodeType": "Return",
                      "src": "872:12:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 1267,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "fullDiv",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1162,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1157,
                      "mutability": "mutable",
                      "name": "l",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1267,
                      "src": "454:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1156,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "454:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1159,
                      "mutability": "mutable",
                      "name": "h",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1267,
                      "src": "473:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1158,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "473:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1161,
                      "mutability": "mutable",
                      "name": "d",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1267,
                      "src": "492:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1160,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "492:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "444:63:3"
                },
                "returnParameters": {
                  "id": 1165,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1164,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1267,
                      "src": "530:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1163,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "530:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "529:9:3"
                },
                "scope": 1330,
                "src": "428:463:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 1328,
                  "nodeType": "Block",
                  "src": "1008:262:3",
                  "statements": [
                    {
                      "assignments": [
                        1279,
                        1281
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1279,
                          "mutability": "mutable",
                          "name": "l",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1328,
                          "src": "1019:9:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1278,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1019:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1281,
                          "mutability": "mutable",
                          "name": "h",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1328,
                          "src": "1030:9:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1280,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1030:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1286,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1283,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1269,
                            "src": "1051:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1284,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1271,
                            "src": "1054:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1282,
                          "name": "fullMul",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1155,
                          "src": "1043:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256,uint256)"
                          }
                        },
                        "id": 1285,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1043:13:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1018:38:3"
                    },
                    {
                      "assignments": [
                        1288
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1288,
                          "mutability": "mutable",
                          "name": "mm",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1328,
                          "src": "1067:10:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1287,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1067:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1294,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1290,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1269,
                            "src": "1087:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1291,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1271,
                            "src": "1090:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1292,
                            "name": "d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1273,
                            "src": "1093:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1289,
                          "name": "mulmod",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -16,
                          "src": "1080:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1293,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1080:15:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1067:28:3"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1295,
                          "name": "mm",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1288,
                          "src": "1109:2:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1296,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1279,
                          "src": "1114:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1109:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1302,
                      "nodeType": "IfStatement",
                      "src": "1105:18:3",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1298,
                            "name": "h",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1281,
                            "src": "1117:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1299,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1122:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1117:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1301,
                        "nodeType": "ExpressionStatement",
                        "src": "1117:6:3"
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1303,
                          "name": "l",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1279,
                          "src": "1133:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1304,
                          "name": "mm",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1288,
                          "src": "1138:2:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1133:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1306,
                      "nodeType": "ExpressionStatement",
                      "src": "1133:7:3"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1309,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1307,
                          "name": "h",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1281,
                          "src": "1155:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1160:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1155:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1314,
                      "nodeType": "IfStatement",
                      "src": "1151:24:3",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1310,
                            "name": "l",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1279,
                            "src": "1170:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1311,
                            "name": "d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1273,
                            "src": "1174:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1170:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1277,
                        "id": 1313,
                        "nodeType": "Return",
                        "src": "1163:12:3"
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1318,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1316,
                              "name": "h",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1281,
                              "src": "1194:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1317,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1273,
                              "src": "1198:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1194:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57",
                            "id": 1319,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1201:28:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9573a614b6ab65c92932376c168e5635a05a20769ae8cb8b8a2d9575aad107da",
                              "typeString": "literal_string \"FullMath: FULLDIV_OVERFLOW\""
                            },
                            "value": "FullMath: FULLDIV_OVERFLOW"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_9573a614b6ab65c92932376c168e5635a05a20769ae8cb8b8a2d9575aad107da",
                              "typeString": "literal_string \"FullMath: FULLDIV_OVERFLOW\""
                            }
                          ],
                          "id": 1315,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1186:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1320,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1186:44:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1321,
                      "nodeType": "ExpressionStatement",
                      "src": "1186:44:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1323,
                            "name": "l",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1279,
                            "src": "1255:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1324,
                            "name": "h",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1281,
                            "src": "1258:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1325,
                            "name": "d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1273,
                            "src": "1261:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1322,
                          "name": "fullDiv",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1267,
                          "src": "1247:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1326,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1247:16:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 1277,
                      "id": 1327,
                      "nodeType": "Return",
                      "src": "1240:23:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 1329,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mulDiv",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1274,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1269,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1329,
                      "src": "922:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1268,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "922:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1271,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1329,
                      "src": "941:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1270,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "941:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1273,
                      "mutability": "mutable",
                      "name": "d",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1329,
                      "src": "960:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1272,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "960:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "912:63:3"
                },
                "returnParameters": {
                  "id": 1277,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1276,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1329,
                      "src": "999:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1275,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "999:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "998:9:3"
                },
                "scope": 1330,
                "src": "897:373:3",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 1331,
            "src": "193:1079:3"
          }
        ],
        "src": "38:1235:3"
      }
    },
    "@marx-dex/marx-dex-lib/contracts/libraries/TransferHelper.sol": {
      "id": 4,
      "AST": {
        "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/TransferHelper.sol",
        "exportedSymbols": {
          "TransferHelper": [
            1490
          ]
        },
        "id": 1491,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1332,
            "literals": [
              "solidity",
              ">=",
              "0.6",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "46:24:4"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 1490,
            "linearizedBaseContracts": [
              1490
            ],
            "name": "TransferHelper",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 1374,
                  "nodeType": "Block",
                  "src": "314:332:4",
                  "statements": [
                    {
                      "assignments": [
                        1342,
                        1344
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1342,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1374,
                          "src": "390:12:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1341,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "390:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1344,
                          "mutability": "mutable",
                          "name": "data",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1374,
                          "src": "404:17:4",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 1343,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "404:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1354,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30783039356561376233",
                                "id": 1349,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "459:10:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_157198259_by_1",
                                  "typeString": "int_const 157198259"
                                },
                                "value": "0x095ea7b3"
                              },
                              {
                                "argumentTypes": null,
                                "id": 1350,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1336,
                                "src": "471:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1351,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1338,
                                "src": "475:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_157198259_by_1",
                                  "typeString": "int_const 157198259"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1347,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "436:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1348,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "436:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 1352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "436:45:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1345,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1334,
                            "src": "425:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "425:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 1353,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "425:57:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "389:93:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1370,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1356,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1342,
                              "src": "513:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 1368,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1360,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1357,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1344,
                                        "src": "525:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 1358,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "525:11:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1359,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "540:1:4",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "525:16:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1363,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1344,
                                        "src": "556:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1365,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "563:4:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 1364,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "563:4:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          }
                                        ],
                                        "id": 1366,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "562:6:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1361,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "545:3:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 1362,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "545:10:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 1367,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "545:24:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "525:44:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 1369,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "524:46:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "513:57:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "5472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c6564",
                            "id": 1371,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "584:45:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b4dd1eb4be82119fd3a99acfb5dd4c57591eb0ea309359b1af3d65a4460c7123",
                              "typeString": "literal_string \"TransferHelper::safeApprove: approve failed\""
                            },
                            "value": "TransferHelper::safeApprove: approve failed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_b4dd1eb4be82119fd3a99acfb5dd4c57591eb0ea309359b1af3d65a4460c7123",
                              "typeString": "literal_string \"TransferHelper::safeApprove: approve failed\""
                            }
                          ],
                          "id": 1355,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "492:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "492:147:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1373,
                      "nodeType": "ExpressionStatement",
                      "src": "492:147:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 1375,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeApprove",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1339,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1334,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1375,
                      "src": "242:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1333,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "242:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1336,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1375,
                      "src": "265:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1335,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "265:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1338,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1375,
                      "src": "285:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1337,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "285:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "232:72:4"
                },
                "returnParameters": {
                  "id": 1340,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "314:0:4"
                },
                "scope": 1490,
                "src": "212:434:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1417,
                  "nodeType": "Block",
                  "src": "755:335:4",
                  "statements": [
                    {
                      "assignments": [
                        1385,
                        1387
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1385,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1417,
                          "src": "832:12:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1384,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "832:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1387,
                          "mutability": "mutable",
                          "name": "data",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1417,
                          "src": "846:17:4",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 1386,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "846:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1397,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30786139303539636262",
                                "id": 1392,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "901:10:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2835717307_by_1",
                                  "typeString": "int_const 2835717307"
                                },
                                "value": "0xa9059cbb"
                              },
                              {
                                "argumentTypes": null,
                                "id": 1393,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1379,
                                "src": "913:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1394,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1381,
                                "src": "917:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_2835717307_by_1",
                                  "typeString": "int_const 2835717307"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1390,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "878:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "878:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 1395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "878:45:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1388,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1377,
                            "src": "867:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "867:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 1396,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "867:57:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "831:93:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1399,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1385,
                              "src": "955:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 1411,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1403,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1400,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1387,
                                        "src": "967:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 1401,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "967:11:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1402,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "982:1:4",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "967:16:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1406,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1387,
                                        "src": "998:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1408,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1005:4:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 1407,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "1005:4:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          }
                                        ],
                                        "id": 1409,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1004:6:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1404,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "987:3:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 1405,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "987:10:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 1410,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "987:24:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "967:44:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 1412,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "966:46:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "955:57:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "5472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564",
                            "id": 1414,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1026:47:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_daea69421eeb1164e163c36f3d4349f0db3ec4e0d1381bd5bf4faf53496c2611",
                              "typeString": "literal_string \"TransferHelper::safeTransfer: transfer failed\""
                            },
                            "value": "TransferHelper::safeTransfer: transfer failed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_daea69421eeb1164e163c36f3d4349f0db3ec4e0d1381bd5bf4faf53496c2611",
                              "typeString": "literal_string \"TransferHelper::safeTransfer: transfer failed\""
                            }
                          ],
                          "id": 1398,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "934:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "934:149:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1416,
                      "nodeType": "ExpressionStatement",
                      "src": "934:149:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 1418,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1382,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1377,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1418,
                      "src": "683:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1376,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "683:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1379,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1418,
                      "src": "706:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1378,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "706:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1381,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1418,
                      "src": "726:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1380,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "726:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "673:72:4"
                },
                "returnParameters": {
                  "id": 1383,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "755:0:4"
                },
                "scope": 1490,
                "src": "652:438:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1463,
                  "nodeType": "Block",
                  "src": "1225:357:4",
                  "statements": [
                    {
                      "assignments": [
                        1430,
                        1432
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1430,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1463,
                          "src": "1314:12:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1429,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1314:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1432,
                          "mutability": "mutable",
                          "name": "data",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1463,
                          "src": "1328:17:4",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 1431,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1328:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1443,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30783233623837326464",
                                "id": 1437,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1383:10:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_599290589_by_1",
                                  "typeString": "int_const 599290589"
                                },
                                "value": "0x23b872dd"
                              },
                              {
                                "argumentTypes": null,
                                "id": 1438,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1422,
                                "src": "1395:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1439,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1424,
                                "src": "1401:2:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1440,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1426,
                                "src": "1405:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_599290589_by_1",
                                  "typeString": "int_const 599290589"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1435,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "1360:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1436,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1360:22:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 1441,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1360:51:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1433,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1420,
                            "src": "1349:5:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1349:10:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 1442,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1349:63:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1313:99:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1445,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1430,
                              "src": "1443:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 1457,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1449,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1446,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1432,
                                        "src": "1455:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 1447,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1455:11:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1448,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1470:1:4",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "1455:16:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1452,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1432,
                                        "src": "1486:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1454,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1493:4:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 1453,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "1493:4:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          }
                                        ],
                                        "id": 1455,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1492:6:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1450,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "1475:3:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 1451,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1475:10:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 1456,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1475:24:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "1455:44:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 1458,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1454:46:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1443:57:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c6564",
                            "id": 1460,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1514:51:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3f8faf98afe9344b6d4b0e75b0101259bf282914b3b5a9320c6918b6e27ede1c",
                              "typeString": "literal_string \"TransferHelper::transferFrom: transferFrom failed\""
                            },
                            "value": "TransferHelper::transferFrom: transferFrom failed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3f8faf98afe9344b6d4b0e75b0101259bf282914b3b5a9320c6918b6e27ede1c",
                              "typeString": "literal_string \"TransferHelper::transferFrom: transferFrom failed\""
                            }
                          ],
                          "id": 1444,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1422:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1461,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1422:153:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1462,
                      "nodeType": "ExpressionStatement",
                      "src": "1422:153:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 1464,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1427,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1420,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1464,
                      "src": "1131:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1419,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1131:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1422,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1464,
                      "src": "1154:12:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1421,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1154:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1424,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1464,
                      "src": "1176:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1423,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1176:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1426,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1464,
                      "src": "1196:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1425,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1196:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1121:94:4"
                },
                "returnParameters": {
                  "id": 1428,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1225:0:4"
                },
                "scope": 1490,
                "src": "1096:486:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1488,
                  "nodeType": "Block",
                  "src": "1649:153:4",
                  "statements": [
                    {
                      "assignments": [
                        1472,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1472,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1488,
                          "src": "1660:12:4",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1471,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1660:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 1482,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1479,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1710:1:4",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 1478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1700:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes memory)"
                              },
                              "typeName": {
                                "id": 1477,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "1704:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              }
                            },
                            "id": 1480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1700:12:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1473,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1466,
                              "src": "1678:2:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1474,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1678:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 1476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "argumentTypes": null,
                              "id": 1475,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1468,
                              "src": "1693:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "1678:21:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 1481,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1678:35:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1659:54:4"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1484,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1472,
                            "src": "1731:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "5472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c6564",
                            "id": 1485,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1740:54:4",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_43d7bec223ecf9eb06ea147e7d564bc71c2448662d62a4ea86ce71fc4518b350",
                              "typeString": "literal_string \"TransferHelper::safeTransferETH: ETH transfer failed\""
                            },
                            "value": "TransferHelper::safeTransferETH: ETH transfer failed"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_43d7bec223ecf9eb06ea147e7d564bc71c2448662d62a4ea86ce71fc4518b350",
                              "typeString": "literal_string \"TransferHelper::safeTransferETH: ETH transfer failed\""
                            }
                          ],
                          "id": 1483,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1723:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1486,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1723:72:4",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1487,
                      "nodeType": "ExpressionStatement",
                      "src": "1723:72:4"
                    }
                  ]
                },
                "documentation": null,
                "id": 1489,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransferETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1469,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1466,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1489,
                      "src": "1613:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1465,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1613:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1468,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1489,
                      "src": "1625:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1467,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1625:7:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1612:27:4"
                },
                "returnParameters": {
                  "id": 1470,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1649:0:4"
                },
                "scope": 1490,
                "src": "1588:214:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 1491,
            "src": "183:1621:4"
          }
        ],
        "src": "46:1759:4"
      }
    },
    "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Factory.sol": {
      "id": 5,
      "AST": {
        "absolutePath": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Factory.sol",
        "exportedSymbols": {
          "IMarXDEXV2Factory": [
            1553
          ]
        },
        "id": 1554,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1492,
            "literals": [
              "solidity",
              ">=",
              "0.5",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:5"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 1553,
            "linearizedBaseContracts": [
              1553
            ],
            "name": "IMarXDEXV2Factory",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "documentation": null,
                "id": 1502,
                "name": "PairCreated",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1501,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1494,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "token0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1502,
                      "src": "78:22:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1493,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "78:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1496,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "token1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1502,
                      "src": "102:22:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1495,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "102:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1498,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1502,
                      "src": "126:12:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1497,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "126:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1500,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1502,
                      "src": "140:4:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1499,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "140:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "77:68:5"
                },
                "src": "60:86:5"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "017e7e58",
                "id": 1507,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "feeTo",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1503,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "166:2:5"
                },
                "returnParameters": {
                  "id": 1506,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1505,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1507,
                      "src": "192:7:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1504,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "192:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "191:9:5"
                },
                "scope": 1553,
                "src": "152:49:5",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "094b7415",
                "id": 1512,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "feeToSetter",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1508,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "226:2:5"
                },
                "returnParameters": {
                  "id": 1511,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1510,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1512,
                      "src": "252:7:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1509,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "252:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "251:9:5"
                },
                "scope": 1553,
                "src": "206:55:5",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "e6a43905",
                "id": 1521,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getPair",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1517,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1514,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1521,
                      "src": "284:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1513,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "284:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1516,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1521,
                      "src": "300:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1515,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "300:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "283:32:5"
                },
                "returnParameters": {
                  "id": 1520,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1519,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1521,
                      "src": "339:12:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1518,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "339:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "338:14:5"
                },
                "scope": 1553,
                "src": "267:86:5",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "1e3dd18b",
                "id": 1528,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allPairs",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1524,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1523,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1528,
                      "src": "376:4:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1522,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "376:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "375:6:5"
                },
                "returnParameters": {
                  "id": 1527,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1526,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1528,
                      "src": "405:12:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1525,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "405:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "404:14:5"
                },
                "scope": 1553,
                "src": "358:61:5",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "574f2ba3",
                "id": 1533,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allPairsLength",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1529,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "447:2:5"
                },
                "returnParameters": {
                  "id": 1532,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1531,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1533,
                      "src": "473:4:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1530,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "473:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "472:6:5"
                },
                "scope": 1553,
                "src": "424:55:5",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "c9c65396",
                "id": 1542,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "createPair",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1538,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1535,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1542,
                      "src": "505:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1534,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "505:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1537,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1542,
                      "src": "521:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1536,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "521:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "504:32:5"
                },
                "returnParameters": {
                  "id": 1541,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1540,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1542,
                      "src": "555:12:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1539,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "555:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "554:14:5"
                },
                "scope": 1553,
                "src": "485:84:5",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "f46901ed",
                "id": 1547,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setFeeTo",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1545,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1544,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1547,
                      "src": "593:7:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1543,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "593:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "592:9:5"
                },
                "returnParameters": {
                  "id": 1546,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "610:0:5"
                },
                "scope": 1553,
                "src": "575:36:5",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "a2e74af6",
                "id": 1552,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setFeeToSetter",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1550,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1549,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1552,
                      "src": "640:7:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1548,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "640:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "639:9:5"
                },
                "returnParameters": {
                  "id": 1551,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "657:0:5"
                },
                "scope": 1553,
                "src": "616:42:5",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 1554,
            "src": "26:634:5"
          }
        ],
        "src": "0:661:5"
      }
    },
    "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Pair.sol": {
      "id": 6,
      "AST": {
        "absolutePath": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Pair.sol",
        "exportedSymbols": {
          "IMarXDEXV2Pair": [
            1795
          ]
        },
        "id": 1796,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1555,
            "literals": [
              "solidity",
              ">=",
              "0.5",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:6"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 1795,
            "linearizedBaseContracts": [
              1795
            ],
            "name": "IMarXDEXV2Pair",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "documentation": null,
                "id": 1563,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1562,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1557,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1563,
                      "src": "72:21:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1556,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "72:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1559,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1563,
                      "src": "95:23:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1558,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "95:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1561,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1563,
                      "src": "120:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1560,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "120:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "71:60:6"
                },
                "src": "57:75:6"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 1571,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1570,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1565,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1571,
                      "src": "152:20:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1564,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "152:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1567,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1571,
                      "src": "174:18:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1566,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "174:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1569,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1571,
                      "src": "194:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1568,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "194:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "151:54:6"
                },
                "src": "137:69:6"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "06fdde03",
                "id": 1576,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "name",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1572,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "225:2:6"
                },
                "returnParameters": {
                  "id": 1575,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1574,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1576,
                      "src": "251:13:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1573,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "251:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "250:15:6"
                },
                "scope": 1795,
                "src": "212:54:6",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "95d89b41",
                "id": 1581,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "symbol",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1577,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "286:2:6"
                },
                "returnParameters": {
                  "id": 1580,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1579,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1581,
                      "src": "312:13:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 1578,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "312:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "311:15:6"
                },
                "scope": 1795,
                "src": "271:56:6",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "313ce567",
                "id": 1586,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "decimals",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1582,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "349:2:6"
                },
                "returnParameters": {
                  "id": 1585,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1584,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1586,
                      "src": "375:5:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1583,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "375:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "374:7:6"
                },
                "scope": 1795,
                "src": "332:50:6",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "18160ddd",
                "id": 1591,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1587,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "407:2:6"
                },
                "returnParameters": {
                  "id": 1590,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1589,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1591,
                      "src": "433:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1588,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "433:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "432:6:6"
                },
                "scope": 1795,
                "src": "387:52:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "70a08231",
                "id": 1598,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1594,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1593,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1598,
                      "src": "463:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1592,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "463:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "462:15:6"
                },
                "returnParameters": {
                  "id": 1597,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1596,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1598,
                      "src": "501:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1595,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "501:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "500:6:6"
                },
                "scope": 1795,
                "src": "444:63:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "dd62ed3e",
                "id": 1607,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allowance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1603,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1600,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1607,
                      "src": "531:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1599,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "531:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1602,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1607,
                      "src": "546:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1601,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "546:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "530:32:6"
                },
                "returnParameters": {
                  "id": 1606,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1605,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1607,
                      "src": "586:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1604,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "586:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "585:6:6"
                },
                "scope": 1795,
                "src": "512:80:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 1616,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1612,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1609,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1616,
                      "src": "615:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1608,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "615:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1611,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1616,
                      "src": "632:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1610,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "632:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "614:29:6"
                },
                "returnParameters": {
                  "id": 1615,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1614,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1616,
                      "src": "662:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1613,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "662:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "661:6:6"
                },
                "scope": 1795,
                "src": "598:70:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 1625,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1621,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1618,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1625,
                      "src": "691:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1617,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "691:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1620,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1625,
                      "src": "703:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1619,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "703:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "690:24:6"
                },
                "returnParameters": {
                  "id": 1624,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1623,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1625,
                      "src": "733:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1622,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "733:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "732:6:6"
                },
                "scope": 1795,
                "src": "673:66:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 1636,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1632,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1627,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1636,
                      "src": "766:12:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1626,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "766:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1629,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1636,
                      "src": "780:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1628,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "780:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1631,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1636,
                      "src": "792:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1630,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "792:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "765:38:6"
                },
                "returnParameters": {
                  "id": 1635,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1634,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1636,
                      "src": "822:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1633,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "822:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "821:6:6"
                },
                "scope": 1795,
                "src": "744:84:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "3644e515",
                "id": 1641,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "DOMAIN_SEPARATOR",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1637,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "859:2:6"
                },
                "returnParameters": {
                  "id": 1640,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1639,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1641,
                      "src": "885:7:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1638,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "885:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "884:9:6"
                },
                "scope": 1795,
                "src": "834:60:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "30adf81f",
                "id": 1646,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "PERMIT_TYPEHASH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1642,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "923:2:6"
                },
                "returnParameters": {
                  "id": 1645,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1644,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1646,
                      "src": "949:7:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1643,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "949:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "948:9:6"
                },
                "scope": 1795,
                "src": "899:59:6",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "7ecebe00",
                "id": 1653,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "nonces",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1649,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1648,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1653,
                      "src": "979:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1647,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "979:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "978:15:6"
                },
                "returnParameters": {
                  "id": 1652,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1651,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1653,
                      "src": "1017:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1650,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1017:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1016:6:6"
                },
                "scope": 1795,
                "src": "963:60:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d505accf",
                "id": 1670,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "permit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1668,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1655,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1670,
                      "src": "1045:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1654,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1045:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1657,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1670,
                      "src": "1060:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1656,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1060:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1659,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1670,
                      "src": "1077:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1658,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1077:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1661,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1670,
                      "src": "1089:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1660,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1089:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1663,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1670,
                      "src": "1104:7:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 1662,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "1104:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1665,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1670,
                      "src": "1113:9:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1664,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1113:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1667,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1670,
                      "src": "1124:9:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1666,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1124:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1044:90:6"
                },
                "returnParameters": {
                  "id": 1669,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1143:0:6"
                },
                "scope": 1795,
                "src": "1029:115:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 1678,
                "name": "Mint",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1677,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1672,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1678,
                      "src": "1161:22:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1671,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1161:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1674,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1678,
                      "src": "1185:12:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1673,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1185:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1676,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1678,
                      "src": "1199:12:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1675,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1199:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1160:52:6"
                },
                "src": "1150:63:6"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 1688,
                "name": "Burn",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1687,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1680,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1688,
                      "src": "1229:22:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1679,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1229:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1682,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1688,
                      "src": "1253:12:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1681,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1253:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1684,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1688,
                      "src": "1267:12:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1683,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1267:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1686,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1688,
                      "src": "1281:18:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1685,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1281:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1228:72:6"
                },
                "src": "1218:83:6"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 1702,
                "name": "Swap",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1701,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1690,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1702,
                      "src": "1326:22:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1689,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1326:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1692,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0In",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1702,
                      "src": "1358:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1691,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1358:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1694,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1In",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1702,
                      "src": "1382:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1693,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1382:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1696,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0Out",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1702,
                      "src": "1406:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1695,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1406:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1698,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1Out",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1702,
                      "src": "1431:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1697,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1431:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1700,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1702,
                      "src": "1456:18:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1699,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1456:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1316:164:6"
                },
                "src": "1306:175:6"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 1708,
                "name": "Sync",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1707,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1704,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "reserve0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1708,
                      "src": "1497:16:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 1703,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1497:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1706,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "reserve1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1708,
                      "src": "1515:16:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 1705,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1515:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1496:36:6"
                },
                "src": "1486:47:6"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "ba9a7a56",
                "id": 1713,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "MINIMUM_LIQUIDITY",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1709,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1565:2:6"
                },
                "returnParameters": {
                  "id": 1712,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1711,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1713,
                      "src": "1591:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1710,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1591:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1590:6:6"
                },
                "scope": 1795,
                "src": "1539:58:6",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "c45a0155",
                "id": 1718,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "factory",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1714,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1618:2:6"
                },
                "returnParameters": {
                  "id": 1717,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1716,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1718,
                      "src": "1644:7:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1715,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1644:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1643:9:6"
                },
                "scope": 1795,
                "src": "1602:51:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "0dfe1681",
                "id": 1723,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "token0",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1719,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1673:2:6"
                },
                "returnParameters": {
                  "id": 1722,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1721,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1723,
                      "src": "1699:7:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1720,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1699:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1698:9:6"
                },
                "scope": 1795,
                "src": "1658:50:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d21220a7",
                "id": 1728,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "token1",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1724,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1728:2:6"
                },
                "returnParameters": {
                  "id": 1727,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1726,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1728,
                      "src": "1754:7:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1725,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1754:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1753:9:6"
                },
                "scope": 1795,
                "src": "1713:50:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "0902f1ac",
                "id": 1737,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getReserves",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1729,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1788:2:6"
                },
                "returnParameters": {
                  "id": 1736,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1731,
                      "mutability": "mutable",
                      "name": "reserve0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1737,
                      "src": "1814:16:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 1730,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1814:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1733,
                      "mutability": "mutable",
                      "name": "reserve1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1737,
                      "src": "1832:16:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 1732,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1832:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1735,
                      "mutability": "mutable",
                      "name": "blockTimestampLast",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1737,
                      "src": "1850:25:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 1734,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1850:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1813:63:6"
                },
                "scope": 1795,
                "src": "1768:109:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "5909c0d5",
                "id": 1742,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "price0CumulativeLast",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1738,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1911:2:6"
                },
                "returnParameters": {
                  "id": 1741,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1740,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1742,
                      "src": "1937:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1739,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1937:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1936:6:6"
                },
                "scope": 1795,
                "src": "1882:61:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "5a3d5493",
                "id": 1747,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "price1CumulativeLast",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1743,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1977:2:6"
                },
                "returnParameters": {
                  "id": 1746,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1745,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1747,
                      "src": "2003:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1744,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2003:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2002:6:6"
                },
                "scope": 1795,
                "src": "1948:61:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "7464fc3d",
                "id": 1752,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "kLast",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1748,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2028:2:6"
                },
                "returnParameters": {
                  "id": 1751,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1750,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1752,
                      "src": "2054:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1749,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2054:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2053:6:6"
                },
                "scope": 1795,
                "src": "2014:46:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "6a627842",
                "id": 1759,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "mint",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1755,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1754,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1759,
                      "src": "2080:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1753,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2080:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2079:12:6"
                },
                "returnParameters": {
                  "id": 1758,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1757,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1759,
                      "src": "2110:14:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1756,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2110:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2109:16:6"
                },
                "scope": 1795,
                "src": "2066:60:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "89afcb44",
                "id": 1768,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "burn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1762,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1761,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1768,
                      "src": "2145:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1760,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2145:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2144:12:6"
                },
                "returnParameters": {
                  "id": 1767,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1764,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1768,
                      "src": "2175:12:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1763,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2175:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1766,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1768,
                      "src": "2189:12:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1765,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2189:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2174:28:6"
                },
                "scope": 1795,
                "src": "2131:72:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "022c0d9f",
                "id": 1779,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swap",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1777,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1770,
                      "mutability": "mutable",
                      "name": "amount0Out",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1779,
                      "src": "2222:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1769,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2222:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1772,
                      "mutability": "mutable",
                      "name": "amount1Out",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1779,
                      "src": "2239:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1771,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2239:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1774,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1779,
                      "src": "2256:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1773,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2256:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1776,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1779,
                      "src": "2268:19:6",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1775,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2268:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2221:67:6"
                },
                "returnParameters": {
                  "id": 1778,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2297:0:6"
                },
                "scope": 1795,
                "src": "2208:90:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "bc25cf77",
                "id": 1784,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "skim",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1782,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1781,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1784,
                      "src": "2317:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1780,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2317:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2316:12:6"
                },
                "returnParameters": {
                  "id": 1783,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2337:0:6"
                },
                "scope": 1795,
                "src": "2303:35:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "fff6cae9",
                "id": 1787,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "sync",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1785,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2356:2:6"
                },
                "returnParameters": {
                  "id": 1786,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2367:0:6"
                },
                "scope": 1795,
                "src": "2343:25:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "485cc955",
                "id": 1794,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "initialize",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1792,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1789,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1794,
                      "src": "2394:7:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1788,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2394:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1791,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1794,
                      "src": "2403:7:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1790,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2403:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2393:18:6"
                },
                "returnParameters": {
                  "id": 1793,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2420:0:6"
                },
                "scope": 1795,
                "src": "2374:47:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 1796,
            "src": "26:2397:6"
          }
        ],
        "src": "0:2424:6"
      }
    },
    "contracts/MarXDEXV2Router01.sol": {
      "id": 7,
      "AST": {
        "absolutePath": "contracts/MarXDEXV2Router01.sol",
        "exportedSymbols": {
          "MarXDEXV2Router01": [
            3253
          ]
        },
        "id": 3254,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1797,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".6"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:23:7"
          },
          {
            "absolutePath": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Factory.sol",
            "file": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Factory.sol",
            "id": 1798,
            "nodeType": "ImportDirective",
            "scope": 3254,
            "sourceUnit": 1554,
            "src": "25:79:7",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/TransferHelper.sol",
            "file": "@marx-dex/marx-dex-lib/contracts/libraries/TransferHelper.sol",
            "id": 1799,
            "nodeType": "ImportDirective",
            "scope": 3254,
            "sourceUnit": 1491,
            "src": "105:71:7",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/MarXDEXV2Library.sol",
            "file": "./libraries/MarXDEXV2Library.sol",
            "id": 1800,
            "nodeType": "ImportDirective",
            "scope": 3254,
            "sourceUnit": 7173,
            "src": "178:42:7",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMarXDEXV2Router01.sol",
            "file": "./interfaces/IMarXDEXV2Router01.sol",
            "id": 1801,
            "nodeType": "ImportDirective",
            "scope": 3254,
            "sourceUnit": 6593,
            "src": "221:45:7",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20.sol",
            "file": "./interfaces/IERC20.sol",
            "id": 1802,
            "nodeType": "ImportDirective",
            "scope": 3254,
            "sourceUnit": 6285,
            "src": "267:33:7",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IWETH.sol",
            "file": "./interfaces/IWETH.sol",
            "id": 1803,
            "nodeType": "ImportDirective",
            "scope": 3254,
            "sourceUnit": 6701,
            "src": "301:32:7",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 1804,
                  "name": "IMarXDEXV2Router01",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6592,
                  "src": "365:18:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                    "typeString": "contract IMarXDEXV2Router01"
                  }
                },
                "id": 1805,
                "nodeType": "InheritanceSpecifier",
                "src": "365:18:7"
              }
            ],
            "contractDependencies": [
              6592
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 3253,
            "linearizedBaseContracts": [
              3253,
              6592
            ],
            "name": "MarXDEXV2Router01",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "baseFunctions": [
                  6291
                ],
                "constant": false,
                "functionSelector": "c45a0155",
                "id": 1808,
                "mutability": "immutable",
                "name": "factory",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 1807,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "415:8:7"
                },
                "scope": 3253,
                "src": "390:41:7",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 1806,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "390:7:7",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6296
                ],
                "constant": false,
                "functionSelector": "ad5c4648",
                "id": 1811,
                "mutability": "immutable",
                "name": "WETH",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 1810,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "462:8:7"
                },
                "scope": 3253,
                "src": "437:38:7",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 1809,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "437:7:7",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1824,
                  "nodeType": "Block",
                  "src": "513:92:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1819,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1816,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1813,
                              "src": "531:8:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1817,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "543:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 1818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "543:15:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "531:27:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a2045585049524544",
                            "id": 1820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "560:26:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_840318b5162dc82792f7cb010822a6f0cb487637017aa64b957f4807e9bfc629",
                              "typeString": "literal_string \"MarXDEXV2Router: EXPIRED\""
                            },
                            "value": "MarXDEXV2Router: EXPIRED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_840318b5162dc82792f7cb010822a6f0cb487637017aa64b957f4807e9bfc629",
                              "typeString": "literal_string \"MarXDEXV2Router: EXPIRED\""
                            }
                          ],
                          "id": 1815,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "523:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1821,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "523:64:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1822,
                      "nodeType": "ExpressionStatement",
                      "src": "523:64:7"
                    },
                    {
                      "id": 1823,
                      "nodeType": "PlaceholderStatement",
                      "src": "597:1:7"
                    }
                  ]
                },
                "documentation": null,
                "id": 1825,
                "name": "ensure",
                "nodeType": "ModifierDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1814,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1813,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1825,
                      "src": "498:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1812,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "498:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "497:15:7"
                },
                "src": "482:123:7",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 1840,
                  "nodeType": "Block",
                  "src": "663:57:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1834,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1832,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1808,
                          "src": "673:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1833,
                          "name": "_factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1827,
                          "src": "683:8:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "673:18:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1835,
                      "nodeType": "ExpressionStatement",
                      "src": "673:18:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1838,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1836,
                          "name": "WETH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1811,
                          "src": "701:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1837,
                          "name": "_WETH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1829,
                          "src": "708:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "701:12:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1839,
                      "nodeType": "ExpressionStatement",
                      "src": "701:12:7"
                    }
                  ]
                },
                "documentation": null,
                "id": 1841,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1830,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1827,
                      "mutability": "mutable",
                      "name": "_factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1841,
                      "src": "623:16:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1826,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "623:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1829,
                      "mutability": "mutable",
                      "name": "_WETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1841,
                      "src": "641:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1828,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "641:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "622:33:7"
                },
                "returnParameters": {
                  "id": 1831,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "663:0:7"
                },
                "scope": 3253,
                "src": "611:109:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1851,
                  "nodeType": "Block",
                  "src": "753:98:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 1848,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1845,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "770:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1846,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "770:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1847,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1811,
                              "src": "784:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "770:18:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 1844,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "763:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 1849,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "763:26:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1850,
                      "nodeType": "ExpressionStatement",
                      "src": "763:26:7"
                    }
                  ]
                },
                "documentation": null,
                "id": 1852,
                "implemented": true,
                "kind": "receive",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1842,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "733:2:7"
                },
                "returnParameters": {
                  "id": 1843,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "753:0:7"
                },
                "scope": 3253,
                "src": "726:125:7",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 1982,
                  "nodeType": "Block",
                  "src": "1118:1124:7",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1882,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1875,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1854,
                              "src": "1218:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1876,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1856,
                              "src": "1226:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1872,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1808,
                                  "src": "1201:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1871,
                                "name": "IMarXDEXV2Factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1553,
                                "src": "1183:17:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Factory_$1553_$",
                                  "typeString": "type(contract IMarXDEXV2Factory)"
                                }
                              },
                              "id": 1873,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1183:26:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Factory_$1553",
                                "typeString": "contract IMarXDEXV2Factory"
                              }
                            },
                            "id": 1874,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPair",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1521,
                            "src": "1183:34:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$",
                              "typeString": "function (address,address) view external returns (address)"
                            }
                          },
                          "id": 1877,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1183:50:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1245:1:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 1879,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1237:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1878,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1237:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 1881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1237:10:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "1183:64:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1892,
                      "nodeType": "IfStatement",
                      "src": "1179:148:7",
                      "trueBody": {
                        "id": 1891,
                        "nodeType": "Block",
                        "src": "1249:78:7",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1887,
                                  "name": "tokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1854,
                                  "src": "1301:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1888,
                                  "name": "tokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1856,
                                  "src": "1309:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1884,
                                      "name": "factory",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1808,
                                      "src": "1281:7:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1883,
                                    "name": "IMarXDEXV2Factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1553,
                                    "src": "1263:17:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Factory_$1553_$",
                                      "typeString": "type(contract IMarXDEXV2Factory)"
                                    }
                                  },
                                  "id": 1885,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1263:26:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMarXDEXV2Factory_$1553",
                                    "typeString": "contract IMarXDEXV2Factory"
                                  }
                                },
                                "id": 1886,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "createPair",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1542,
                                "src": "1263:37:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address,address) external returns (address)"
                                }
                              },
                              "id": 1889,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1263:53:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1890,
                            "nodeType": "ExpressionStatement",
                            "src": "1263:53:7"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        1894,
                        1896
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1894,
                          "mutability": "mutable",
                          "name": "reserveA",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1982,
                          "src": "1337:13:7",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1893,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1337:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1896,
                          "mutability": "mutable",
                          "name": "reserveB",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1982,
                          "src": "1352:13:7",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1895,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1352:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1903,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1899,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1808,
                            "src": "1398:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1900,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1854,
                            "src": "1407:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1901,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1856,
                            "src": "1415:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1897,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "1369:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 1898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getReserves",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6846,
                          "src": "1369:28:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,address,address) view returns (uint256,uint256)"
                          }
                        },
                        "id": 1902,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1369:53:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1336:86:7"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1910,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1904,
                            "name": "reserveA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1894,
                            "src": "1436:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1905,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1448:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1436:13:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1907,
                            "name": "reserveB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1896,
                            "src": "1453:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1908,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1465:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1453:13:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1436:30:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 1980,
                        "nodeType": "Block",
                        "src": "1552:684:7",
                        "statements": [
                          {
                            "assignments": [
                              1921
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 1921,
                                "mutability": "mutable",
                                "name": "amountBOptimal",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 1980,
                                "src": "1566:19:7",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 1920,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1566:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 1928,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1924,
                                  "name": "amountADesired",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1858,
                                  "src": "1611:14:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1925,
                                  "name": "reserveA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1894,
                                  "src": "1627:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1926,
                                  "name": "reserveB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1896,
                                  "src": "1637:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1922,
                                  "name": "MarXDEXV2Library",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7172,
                                  "src": "1588:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                    "typeString": "type(library MarXDEXV2Library)"
                                  }
                                },
                                "id": 1923,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "quote",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6885,
                                "src": "1588:22:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1927,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1588:58:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1566:80:7"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1931,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1929,
                                "name": "amountBOptimal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1921,
                                "src": "1664:14:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1930,
                                "name": "amountBDesired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1860,
                                "src": "1682:14:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1664:32:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 1978,
                              "nodeType": "Block",
                              "src": "1887:339:7",
                              "statements": [
                                {
                                  "assignments": [
                                    1949
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 1949,
                                      "mutability": "mutable",
                                      "name": "amountAOptimal",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 1978,
                                      "src": "1905:19:7",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 1948,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1905:4:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 1956,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1952,
                                        "name": "amountBDesired",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1860,
                                        "src": "1950:14:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1953,
                                        "name": "reserveB",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1896,
                                        "src": "1966:8:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1954,
                                        "name": "reserveA",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1894,
                                        "src": "1976:8:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1950,
                                        "name": "MarXDEXV2Library",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7172,
                                        "src": "1927:16:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                          "typeString": "type(library MarXDEXV2Library)"
                                        }
                                      },
                                      "id": 1951,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "quote",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6885,
                                      "src": "1927:22:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 1955,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1927:58:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "1905:80:7"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1960,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 1958,
                                          "name": "amountAOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1949,
                                          "src": "2010:14:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 1959,
                                          "name": "amountADesired",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1858,
                                          "src": "2028:14:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "2010:32:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 1957,
                                      "name": "assert",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -3,
                                      "src": "2003:6:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                                        "typeString": "function (bool) pure"
                                      }
                                    },
                                    "id": 1961,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2003:40:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 1962,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2003:40:7"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1966,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 1964,
                                          "name": "amountAOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1949,
                                          "src": "2069:14:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 1965,
                                          "name": "amountAMin",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1862,
                                          "src": "2087:10:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "2069:28:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f415f414d4f554e54",
                                        "id": 1967,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2099:40:7",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_e5cf3244154b31e1a2fcd039426640b0c43afcb263c1b124718f4a31016dba6b",
                                          "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_A_AMOUNT\""
                                        },
                                        "value": "MarXDEXV2Router: INSUFFICIENT_A_AMOUNT"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_e5cf3244154b31e1a2fcd039426640b0c43afcb263c1b124718f4a31016dba6b",
                                          "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_A_AMOUNT\""
                                        }
                                      ],
                                      "id": 1963,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "2061:7:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 1968,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2061:79:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 1969,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2061:79:7"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1976,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1970,
                                          "name": "amountA",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1867,
                                          "src": "2159:7:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1971,
                                          "name": "amountB",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1869,
                                          "src": "2168:7:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 1972,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "2158:18:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1973,
                                          "name": "amountAOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1949,
                                          "src": "2180:14:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1974,
                                          "name": "amountBDesired",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1860,
                                          "src": "2196:14:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 1975,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "2179:32:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "src": "2158:53:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 1977,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2158:53:7"
                                }
                              ]
                            },
                            "id": 1979,
                            "nodeType": "IfStatement",
                            "src": "1660:566:7",
                            "trueBody": {
                              "id": 1947,
                              "nodeType": "Block",
                              "src": "1698:183:7",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1935,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 1933,
                                          "name": "amountBOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1921,
                                          "src": "1724:14:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 1934,
                                          "name": "amountBMin",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1864,
                                          "src": "1742:10:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "1724:28:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f425f414d4f554e54",
                                        "id": 1936,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1754:40:7",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_e2b94d3b43b922da189e4e9f0aab938b125624f4a303ce567f022d7edf147f38",
                                          "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_B_AMOUNT\""
                                        },
                                        "value": "MarXDEXV2Router: INSUFFICIENT_B_AMOUNT"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_e2b94d3b43b922da189e4e9f0aab938b125624f4a303ce567f022d7edf147f38",
                                          "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_B_AMOUNT\""
                                        }
                                      ],
                                      "id": 1932,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "1716:7:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 1937,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1716:79:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 1938,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1716:79:7"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1945,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1939,
                                          "name": "amountA",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1867,
                                          "src": "1814:7:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1940,
                                          "name": "amountB",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1869,
                                          "src": "1823:7:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 1941,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "1813:18:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1942,
                                          "name": "amountADesired",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1858,
                                          "src": "1835:14:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1943,
                                          "name": "amountBOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1921,
                                          "src": "1851:14:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 1944,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "1834:32:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "src": "1813:53:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 1946,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1813:53:7"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "id": 1981,
                      "nodeType": "IfStatement",
                      "src": "1432:804:7",
                      "trueBody": {
                        "id": 1919,
                        "nodeType": "Block",
                        "src": "1468:78:7",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 1917,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1911,
                                    "name": "amountA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1867,
                                    "src": "1483:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1912,
                                    "name": "amountB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1869,
                                    "src": "1492:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 1913,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "TupleExpression",
                                "src": "1482:18:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1914,
                                    "name": "amountADesired",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1858,
                                    "src": "1504:14:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1915,
                                    "name": "amountBDesired",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1860,
                                    "src": "1520:14:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 1916,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1503:32:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "src": "1482:53:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 1918,
                            "nodeType": "ExpressionStatement",
                            "src": "1482:53:7"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 1983,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_addLiquidity",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1865,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1854,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1983,
                      "src": "920:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1853,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "920:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1856,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1983,
                      "src": "944:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1855,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "944:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1858,
                      "mutability": "mutable",
                      "name": "amountADesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1983,
                      "src": "968:19:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1857,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "968:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1860,
                      "mutability": "mutable",
                      "name": "amountBDesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1983,
                      "src": "997:19:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1859,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "997:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1862,
                      "mutability": "mutable",
                      "name": "amountAMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1983,
                      "src": "1026:15:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1861,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1026:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1864,
                      "mutability": "mutable",
                      "name": "amountBMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1983,
                      "src": "1051:15:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1863,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1051:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "910:162:7"
                },
                "returnParameters": {
                  "id": 1870,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1867,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1983,
                      "src": "1090:12:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1866,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1090:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1869,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1983,
                      "src": "1104:12:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1868,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1104:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1089:28:7"
                },
                "scope": 3253,
                "src": "888:1354:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "baseFunctions": [
                  6321
                ],
                "body": {
                  "id": 2063,
                  "nodeType": "Block",
                  "src": "2562:400:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2023,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2012,
                              "name": "amountA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2006,
                              "src": "2573:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2013,
                              "name": "amountB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2008,
                              "src": "2582:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2014,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "2572:18:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2016,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1985,
                              "src": "2607:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2017,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1987,
                              "src": "2615:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2018,
                              "name": "amountADesired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1989,
                              "src": "2623:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2019,
                              "name": "amountBDesired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1991,
                              "src": "2639:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2020,
                              "name": "amountAMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1993,
                              "src": "2655:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2021,
                              "name": "amountBMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1995,
                              "src": "2667:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2015,
                            "name": "_addLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1983,
                            "src": "2593:13:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,uint256,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 2022,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2593:85:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "2572:106:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2024,
                      "nodeType": "ExpressionStatement",
                      "src": "2572:106:7"
                    },
                    {
                      "assignments": [
                        2026
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2026,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2063,
                          "src": "2688:12:7",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 2025,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2688:7:7",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2033,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2029,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1808,
                            "src": "2728:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2030,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1985,
                            "src": "2737:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2031,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1987,
                            "src": "2745:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2027,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "2703:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 2028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6796,
                          "src": "2703:24:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 2032,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2703:49:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2688:64:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2037,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1985,
                            "src": "2794:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2038,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2802:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2039,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2802:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2040,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2026,
                            "src": "2814:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2041,
                            "name": "amountA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2006,
                            "src": "2820:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2034,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "2762:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 2036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "2762:31:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 2042,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2762:66:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2043,
                      "nodeType": "ExpressionStatement",
                      "src": "2762:66:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2047,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1987,
                            "src": "2870:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2048,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2878:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2878:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2050,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2026,
                            "src": "2890:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2051,
                            "name": "amountB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2008,
                            "src": "2896:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2044,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "2838:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 2046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "2838:31:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 2052,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2838:66:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2053,
                      "nodeType": "ExpressionStatement",
                      "src": "2838:66:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2061,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2054,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2010,
                          "src": "2914:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2059,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1997,
                              "src": "2952:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2056,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2026,
                                  "src": "2941:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2055,
                                "name": "IMarXDEXV2Pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1795,
                                "src": "2926:14:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                  "typeString": "type(contract IMarXDEXV2Pair)"
                                }
                              },
                              "id": 2057,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2926:20:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                "typeString": "contract IMarXDEXV2Pair"
                              }
                            },
                            "id": 2058,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1759,
                            "src": "2926:25:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) external returns (uint256)"
                            }
                          },
                          "id": 2060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2926:29:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2914:41:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2062,
                      "nodeType": "ExpressionStatement",
                      "src": "2914:41:7"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "e8e33700",
                "id": 2064,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2003,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1999,
                        "src": "2499:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2004,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2002,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1825,
                      "src": "2492:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "2492:16:7"
                  }
                ],
                "name": "addLiquidity",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2001,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "2483:8:7"
                },
                "parameters": {
                  "id": 2000,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1985,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2064,
                      "src": "2278:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1984,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2278:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1987,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2064,
                      "src": "2302:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1986,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2302:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1989,
                      "mutability": "mutable",
                      "name": "amountADesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2064,
                      "src": "2326:19:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1988,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2326:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1991,
                      "mutability": "mutable",
                      "name": "amountBDesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2064,
                      "src": "2355:19:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1990,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2355:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1993,
                      "mutability": "mutable",
                      "name": "amountAMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2064,
                      "src": "2384:15:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1992,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2384:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1995,
                      "mutability": "mutable",
                      "name": "amountBMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2064,
                      "src": "2409:15:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1994,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2409:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1997,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2064,
                      "src": "2434:10:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1996,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2434:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1999,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2064,
                      "src": "2454:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1998,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2454:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2268:205:7"
                },
                "returnParameters": {
                  "id": 2011,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2006,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2064,
                      "src": "2518:12:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2005,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2518:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2008,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2064,
                      "src": "2532:12:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2007,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2532:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2010,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2064,
                      "src": "2546:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2009,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2546:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2517:44:7"
                },
                "scope": 3253,
                "src": "2247:715:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6342
                ],
                "body": {
                  "id": 2165,
                  "nodeType": "Block",
                  "src": "3255:647:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2089,
                              "name": "amountToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2083,
                              "src": "3266:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2090,
                              "name": "amountETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2085,
                              "src": "3279:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2091,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "3265:24:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2093,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2066,
                              "src": "3319:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2094,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1811,
                              "src": "3338:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2095,
                              "name": "amountTokenDesired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2068,
                              "src": "3356:18:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2096,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3388:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3388:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2098,
                              "name": "amountTokenMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2070,
                              "src": "3411:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2099,
                              "name": "amountETHMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2072,
                              "src": "3439:12:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2092,
                            "name": "_addLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1983,
                            "src": "3292:13:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,uint256,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 2100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3292:169:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "3265:196:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2102,
                      "nodeType": "ExpressionStatement",
                      "src": "3265:196:7"
                    },
                    {
                      "assignments": [
                        2104
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2104,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2165,
                          "src": "3471:12:7",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 2103,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3471:7:7",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2111,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2107,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1808,
                            "src": "3511:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2108,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2066,
                            "src": "3520:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2109,
                            "name": "WETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1811,
                            "src": "3527:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2105,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "3486:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 2106,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6796,
                          "src": "3486:24:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 2110,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3486:46:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3471:61:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2115,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2066,
                            "src": "3574:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2116,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "3581:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2117,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3581:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2118,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2104,
                            "src": "3593:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2119,
                            "name": "amountToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2083,
                            "src": "3599:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2112,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "3542:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 2114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "3542:31:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 2120,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3542:69:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2121,
                      "nodeType": "ExpressionStatement",
                      "src": "3542:69:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2123,
                                  "name": "WETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1811,
                                  "src": "3627:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2122,
                                "name": "IWETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6700,
                                "src": "3621:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                  "typeString": "type(contract IWETH)"
                                }
                              },
                              "id": 2124,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3621:11:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$6700",
                                "typeString": "contract IWETH"
                              }
                            },
                            "id": 2125,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6685,
                            "src": "3621:19:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 2127,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "argumentTypes": null,
                              "id": 2126,
                              "name": "amountETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2085,
                              "src": "3648:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "3621:37:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                            "typeString": "function () payable external"
                          }
                        },
                        "id": 2128,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3621:39:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2129,
                      "nodeType": "ExpressionStatement",
                      "src": "3621:39:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2135,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2104,
                                "src": "3698:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2136,
                                "name": "amountETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2085,
                                "src": "3704:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2132,
                                    "name": "WETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1811,
                                    "src": "3683:4:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2131,
                                  "name": "IWETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6700,
                                  "src": "3677:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                    "typeString": "type(contract IWETH)"
                                  }
                                },
                                "id": 2133,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3677:11:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWETH_$6700",
                                  "typeString": "contract IWETH"
                                }
                              },
                              "id": 2134,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6694,
                              "src": "3677:20:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 2137,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3677:37:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 2130,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "3670:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 2138,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3670:45:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2139,
                      "nodeType": "ExpressionStatement",
                      "src": "3670:45:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2147,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2140,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2087,
                          "src": "3725:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2145,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2074,
                              "src": "3763:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2142,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2104,
                                  "src": "3752:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2141,
                                "name": "IMarXDEXV2Pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1795,
                                "src": "3737:14:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                  "typeString": "type(contract IMarXDEXV2Pair)"
                                }
                              },
                              "id": 2143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3737:20:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                "typeString": "contract IMarXDEXV2Pair"
                              }
                            },
                            "id": 2144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1759,
                            "src": "3737:25:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) external returns (uint256)"
                            }
                          },
                          "id": 2146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3737:29:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3725:41:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2148,
                      "nodeType": "ExpressionStatement",
                      "src": "3725:41:7"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2152,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2149,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "3780:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3780:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2151,
                          "name": "amountETH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2085,
                          "src": "3792:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3780:21:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2164,
                      "nodeType": "IfStatement",
                      "src": "3776:92:7",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2156,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3834:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3834:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2161,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2158,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3846:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 2159,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3846:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2160,
                                "name": "amountETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2085,
                                "src": "3858:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3846:21:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2153,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1490,
                              "src": "3803:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 2155,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferETH",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1489,
                            "src": "3803:30:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 2162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3803:65:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2163,
                        "nodeType": "ExpressionStatement",
                        "src": "3803:65:7"
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "f305d719",
                "id": 2166,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2080,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2076,
                        "src": "3186:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2081,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2079,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1825,
                      "src": "3179:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3179:16:7"
                  }
                ],
                "name": "addLiquidityETH",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2078,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3162:8:7"
                },
                "parameters": {
                  "id": 2077,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2066,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2166,
                      "src": "3001:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2065,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3001:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2068,
                      "mutability": "mutable",
                      "name": "amountTokenDesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2166,
                      "src": "3024:23:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2067,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3024:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2070,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2166,
                      "src": "3057:19:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2069,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3057:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2072,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2166,
                      "src": "3086:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2071,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3086:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2074,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2166,
                      "src": "3113:10:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2073,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3113:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2076,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2166,
                      "src": "3133:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2075,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3133:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2991:161:7"
                },
                "returnParameters": {
                  "id": 2088,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2083,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2166,
                      "src": "3205:16:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2082,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3205:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2085,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2166,
                      "src": "3223:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2084,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3223:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2087,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2166,
                      "src": "3239:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2086,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3239:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3204:50:7"
                },
                "scope": 3253,
                "src": "2967:935:7",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6363
                ],
                "body": {
                  "id": 2258,
                  "nodeType": "Block",
                  "src": "4208:575:7",
                  "statements": [
                    {
                      "assignments": [
                        2192
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2192,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2258,
                          "src": "4218:12:7",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 2191,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4218:7:7",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2199,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2195,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1808,
                            "src": "4258:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2196,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2168,
                            "src": "4267:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2197,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2170,
                            "src": "4275:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2193,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "4233:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 2194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6796,
                          "src": "4233:24:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 2198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4233:49:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4218:64:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2204,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "4326:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2205,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4326:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2206,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2192,
                            "src": "4338:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2207,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2172,
                            "src": "4344:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2201,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2192,
                                "src": "4307:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2200,
                              "name": "IMarXDEXV2Pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1795,
                              "src": "4292:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                "typeString": "type(contract IMarXDEXV2Pair)"
                              }
                            },
                            "id": 2202,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4292:20:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                              "typeString": "contract IMarXDEXV2Pair"
                            }
                          },
                          "id": 2203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1636,
                          "src": "4292:33:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 2208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4292:62:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 2209,
                      "nodeType": "ExpressionStatement",
                      "src": "4292:62:7"
                    },
                    {
                      "assignments": [
                        2211,
                        2213
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2211,
                          "mutability": "mutable",
                          "name": "amount0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2258,
                          "src": "4391:12:7",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2210,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4391:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 2213,
                          "mutability": "mutable",
                          "name": "amount1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2258,
                          "src": "4405:12:7",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2212,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4405:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2220,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2218,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2178,
                            "src": "4447:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2215,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2192,
                                "src": "4436:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2214,
                              "name": "IMarXDEXV2Pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1795,
                              "src": "4421:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                "typeString": "type(contract IMarXDEXV2Pair)"
                              }
                            },
                            "id": 2216,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4421:20:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                              "typeString": "contract IMarXDEXV2Pair"
                            }
                          },
                          "id": 2217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "burn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1768,
                          "src": "4421:25:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address) external returns (uint256,uint256)"
                          }
                        },
                        "id": 2219,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4421:29:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4390:60:7"
                    },
                    {
                      "assignments": [
                        2222,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2222,
                          "mutability": "mutable",
                          "name": "token0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2258,
                          "src": "4461:14:7",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 2221,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4461:7:7",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 2228,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2225,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2168,
                            "src": "4508:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2226,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2170,
                            "src": "4516:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2223,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "4480:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 2224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sortTokens",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6751,
                          "src": "4480:27:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                            "typeString": "function (address,address) pure returns (address,address)"
                          }
                        },
                        "id": 2227,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4480:43:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                          "typeString": "tuple(address,address)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4460:63:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2242,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2229,
                              "name": "amountA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2187,
                              "src": "4534:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2230,
                              "name": "amountB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2189,
                              "src": "4543:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2231,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "4533:18:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2232,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2168,
                              "src": "4554:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2233,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2222,
                              "src": "4564:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4554:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 2238,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2213,
                                "src": "4595:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2239,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2211,
                                "src": "4604:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 2240,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4594:18:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "id": 2241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "4554:58:7",
                          "trueExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 2235,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2211,
                                "src": "4574:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 2236,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2213,
                                "src": "4583:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 2237,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4573:18:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "4533:79:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2243,
                      "nodeType": "ExpressionStatement",
                      "src": "4533:79:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2247,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2245,
                              "name": "amountA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2187,
                              "src": "4630:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2246,
                              "name": "amountAMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2174,
                              "src": "4641:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4630:21:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f415f414d4f554e54",
                            "id": 2248,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4653:40:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e5cf3244154b31e1a2fcd039426640b0c43afcb263c1b124718f4a31016dba6b",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_A_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: INSUFFICIENT_A_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e5cf3244154b31e1a2fcd039426640b0c43afcb263c1b124718f4a31016dba6b",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_A_AMOUNT\""
                            }
                          ],
                          "id": 2244,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4622:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4622:72:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2250,
                      "nodeType": "ExpressionStatement",
                      "src": "4622:72:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2254,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2252,
                              "name": "amountB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2189,
                              "src": "4712:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2253,
                              "name": "amountBMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2176,
                              "src": "4723:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4712:21:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f425f414d4f554e54",
                            "id": 2255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4735:40:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e2b94d3b43b922da189e4e9f0aab938b125624f4a303ce567f022d7edf147f38",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_B_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: INSUFFICIENT_B_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e2b94d3b43b922da189e4e9f0aab938b125624f4a303ce567f022d7edf147f38",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_B_AMOUNT\""
                            }
                          ],
                          "id": 2251,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4704:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2256,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4704:72:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2257,
                      "nodeType": "ExpressionStatement",
                      "src": "4704:72:7"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "baa2abde",
                "id": 2259,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2184,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2180,
                        "src": "4161:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2185,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2183,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1825,
                      "src": "4154:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "4154:16:7"
                  }
                ],
                "name": "removeLiquidity",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2182,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "4145:8:7"
                },
                "parameters": {
                  "id": 2181,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2168,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2259,
                      "src": "3976:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2167,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3976:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2170,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2259,
                      "src": "4000:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2169,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4000:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2172,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2259,
                      "src": "4024:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2171,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4024:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2174,
                      "mutability": "mutable",
                      "name": "amountAMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2259,
                      "src": "4048:15:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2173,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4048:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2176,
                      "mutability": "mutable",
                      "name": "amountBMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2259,
                      "src": "4073:15:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2175,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4073:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2178,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2259,
                      "src": "4098:10:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2177,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4098:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2180,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2259,
                      "src": "4118:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2179,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4118:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3966:171:7"
                },
                "returnParameters": {
                  "id": 2190,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2187,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2259,
                      "src": "4180:12:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2186,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4180:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2189,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2259,
                      "src": "4194:12:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2188,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4194:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4179:28:7"
                },
                "scope": 3253,
                "src": "3942:841:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6382
                ],
                "body": {
                  "id": 2321,
                  "nodeType": "Block",
                  "src": "5044:389:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2282,
                              "name": "amountToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2278,
                              "src": "5055:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2283,
                              "name": "amountETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2280,
                              "src": "5068:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2284,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "5054:24:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2286,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2261,
                              "src": "5110:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2287,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1811,
                              "src": "5129:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2288,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2263,
                              "src": "5147:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2289,
                              "name": "amountTokenMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2265,
                              "src": "5170:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2290,
                              "name": "amountETHMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2267,
                              "src": "5198:12:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2293,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "5232:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MarXDEXV2Router01_$3253",
                                    "typeString": "contract MarXDEXV2Router01"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MarXDEXV2Router01_$3253",
                                    "typeString": "contract MarXDEXV2Router01"
                                  }
                                ],
                                "id": 2292,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5224:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2291,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5224:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5224:13:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2295,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2271,
                              "src": "5251:8:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2285,
                            "name": "removeLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2259,
                            "src": "5081:15:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 2296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5081:188:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "5054:215:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2298,
                      "nodeType": "ExpressionStatement",
                      "src": "5054:215:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2302,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2261,
                            "src": "5307:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2303,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2269,
                            "src": "5314:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2304,
                            "name": "amountToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2278,
                            "src": "5318:11:7",
                            "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": 2299,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "5279:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 2301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1418,
                          "src": "5279:27:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 2305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5279:51:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2306,
                      "nodeType": "ExpressionStatement",
                      "src": "5279:51:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2311,
                            "name": "amountETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2280,
                            "src": "5361:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2308,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1811,
                                "src": "5346:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2307,
                              "name": "IWETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6700,
                              "src": "5340:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                "typeString": "type(contract IWETH)"
                              }
                            },
                            "id": 2309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5340:11:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$6700",
                              "typeString": "contract IWETH"
                            }
                          },
                          "id": 2310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6699,
                          "src": "5340:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256) external"
                          }
                        },
                        "id": 2312,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5340:31:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2313,
                      "nodeType": "ExpressionStatement",
                      "src": "5340:31:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2317,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2269,
                            "src": "5412:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2318,
                            "name": "amountETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2280,
                            "src": "5416:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2314,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "5381:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 2316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1489,
                          "src": "5381:30:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 2319,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5381:45:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2320,
                      "nodeType": "ExpressionStatement",
                      "src": "5381:45:7"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "02751cec",
                "id": 2322,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2275,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2271,
                        "src": "4991:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2276,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2274,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1825,
                      "src": "4984:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "4984:16:7"
                  }
                ],
                "name": "removeLiquidityETH",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2273,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "4975:8:7"
                },
                "parameters": {
                  "id": 2272,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2261,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2322,
                      "src": "4825:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2260,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4825:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2263,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2322,
                      "src": "4848:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2262,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4848:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2265,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2322,
                      "src": "4872:19:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2264,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4872:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2267,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2322,
                      "src": "4901:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2266,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4901:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2269,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2322,
                      "src": "4928:10:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2268,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4928:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2271,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2322,
                      "src": "4948:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2270,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4948:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4815:152:7"
                },
                "returnParameters": {
                  "id": 2281,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2278,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2322,
                      "src": "5010:16:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2277,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5010:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2280,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2322,
                      "src": "5028:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2279,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5028:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5009:34:7"
                },
                "scope": 3253,
                "src": "4788:645:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6411
                ],
                "body": {
                  "id": 2403,
                  "nodeType": "Block",
                  "src": "5755:338:7",
                  "statements": [
                    {
                      "assignments": [
                        2353
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2353,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2403,
                          "src": "5765:12:7",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 2352,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5765:7:7",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2360,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2356,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1808,
                            "src": "5805:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2357,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2324,
                            "src": "5814:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2358,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2326,
                            "src": "5822:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2354,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "5780:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 2355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6796,
                          "src": "5780:24:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 2359,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5780:49:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5765:64:7"
                    },
                    {
                      "assignments": [
                        2362
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2362,
                          "mutability": "mutable",
                          "name": "value",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2403,
                          "src": "5839:10:7",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2361,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5839:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2371,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "id": 2363,
                          "name": "approveMax",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2338,
                          "src": "5852:10:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "id": 2369,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2328,
                          "src": "5876:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2370,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "5852:33:7",
                        "trueExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2367,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "5870:2:7",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2366,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5871:1:7",
                                "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": 2365,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5865:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 2364,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "5865:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5865:8:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5839:46:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2376,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "5923:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5923:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2380,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "5943:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router01_$3253",
                                  "typeString": "contract MarXDEXV2Router01"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router01_$3253",
                                  "typeString": "contract MarXDEXV2Router01"
                                }
                              ],
                              "id": 2379,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5935:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2378,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5935:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2381,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5935:13:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2382,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2362,
                            "src": "5950:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2383,
                            "name": "deadline",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2336,
                            "src": "5957:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2384,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "5967:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2385,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2342,
                            "src": "5970:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2386,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2344,
                            "src": "5973:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2373,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2353,
                                "src": "5910:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2372,
                              "name": "IMarXDEXV2Pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1795,
                              "src": "5895:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                "typeString": "type(contract IMarXDEXV2Pair)"
                              }
                            },
                            "id": 2374,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5895:20:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                              "typeString": "contract IMarXDEXV2Pair"
                            }
                          },
                          "id": 2375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "permit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1670,
                          "src": "5895:27:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                            "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                          }
                        },
                        "id": 2387,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5895:80:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2388,
                      "nodeType": "ExpressionStatement",
                      "src": "5895:80:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2401,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2389,
                              "name": "amountA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2348,
                              "src": "5986:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2390,
                              "name": "amountB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2350,
                              "src": "5995:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2391,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "5985:18:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2393,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2324,
                              "src": "6022:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2394,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2326,
                              "src": "6030:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2395,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2328,
                              "src": "6038:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2396,
                              "name": "amountAMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2330,
                              "src": "6049:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2397,
                              "name": "amountBMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2332,
                              "src": "6061:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2398,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2334,
                              "src": "6073:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2399,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2336,
                              "src": "6077:8:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2392,
                            "name": "removeLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2259,
                            "src": "6006:15:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 2400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6006:80:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "5985:101:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2402,
                      "nodeType": "ExpressionStatement",
                      "src": "5985:101:7"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "2195995c",
                "id": 2404,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityWithPermit",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2346,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "5709:8:7"
                },
                "parameters": {
                  "id": 2345,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2324,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2404,
                      "src": "5482:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2323,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5482:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2326,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2404,
                      "src": "5506:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2325,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5506:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2328,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2404,
                      "src": "5530:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2327,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5530:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2330,
                      "mutability": "mutable",
                      "name": "amountAMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2404,
                      "src": "5554:15:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2329,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5554:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2332,
                      "mutability": "mutable",
                      "name": "amountBMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2404,
                      "src": "5579:15:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2331,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5579:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2334,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2404,
                      "src": "5604:10:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2333,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5604:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2336,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2404,
                      "src": "5624:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2335,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5624:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2338,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2404,
                      "src": "5647:15:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2337,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5647:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2340,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2404,
                      "src": "5664:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 2339,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "5664:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2342,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2404,
                      "src": "5673:9:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2341,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5673:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2344,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2404,
                      "src": "5684:9:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2343,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5684:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5472:227:7"
                },
                "returnParameters": {
                  "id": 2351,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2348,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2404,
                      "src": "5727:12:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2347,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5727:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2350,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2404,
                      "src": "5741:12:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2349,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5741:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5726:28:7"
                },
                "scope": 3253,
                "src": "5438:655:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6438
                ],
                "body": {
                  "id": 2482,
                  "nodeType": "Block",
                  "src": "6405:341:7",
                  "statements": [
                    {
                      "assignments": [
                        2433
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2433,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2482,
                          "src": "6415:12:7",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 2432,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6415:7:7",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2440,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2436,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1808,
                            "src": "6455:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2437,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2406,
                            "src": "6464:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2438,
                            "name": "WETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1811,
                            "src": "6471:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2434,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "6430:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 2435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6796,
                          "src": "6430:24:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 2439,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6430:46:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6415:61:7"
                    },
                    {
                      "assignments": [
                        2442
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2442,
                          "mutability": "mutable",
                          "name": "value",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2482,
                          "src": "6486:10:7",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2441,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6486:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2451,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "id": 2443,
                          "name": "approveMax",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2418,
                          "src": "6499:10:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "id": 2449,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2408,
                          "src": "6523:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "6499:33:7",
                        "trueExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2447,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "6517:2:7",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2446,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6518:1:7",
                                "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": 2445,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6512:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 2444,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "6512:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6512:8:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6486:46:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2456,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "6570:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2457,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6570:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2460,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "6590:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router01_$3253",
                                  "typeString": "contract MarXDEXV2Router01"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router01_$3253",
                                  "typeString": "contract MarXDEXV2Router01"
                                }
                              ],
                              "id": 2459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6582:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2458,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6582:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6582:13:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2462,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2442,
                            "src": "6597:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2463,
                            "name": "deadline",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2416,
                            "src": "6604:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2464,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2420,
                            "src": "6614:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2465,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2422,
                            "src": "6617:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2466,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2424,
                            "src": "6620:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2453,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2433,
                                "src": "6557:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2452,
                              "name": "IMarXDEXV2Pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1795,
                              "src": "6542:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                "typeString": "type(contract IMarXDEXV2Pair)"
                              }
                            },
                            "id": 2454,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6542:20:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                              "typeString": "contract IMarXDEXV2Pair"
                            }
                          },
                          "id": 2455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "permit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1670,
                          "src": "6542:27:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                            "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                          }
                        },
                        "id": 2467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6542:80:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2468,
                      "nodeType": "ExpressionStatement",
                      "src": "6542:80:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2480,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2469,
                              "name": "amountToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2428,
                              "src": "6633:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2470,
                              "name": "amountETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2430,
                              "src": "6646:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2471,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "6632:24:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2473,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2406,
                              "src": "6678:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2474,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2408,
                              "src": "6685:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2475,
                              "name": "amountTokenMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2410,
                              "src": "6696:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2476,
                              "name": "amountETHMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2412,
                              "src": "6712:12:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2477,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2414,
                              "src": "6726:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2478,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2416,
                              "src": "6730:8:7",
                              "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"
                              }
                            ],
                            "id": 2472,
                            "name": "removeLiquidityETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2322,
                            "src": "6659:18:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 2479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6659:80:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "6632:107:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2481,
                      "nodeType": "ExpressionStatement",
                      "src": "6632:107:7"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "ded9382a",
                "id": 2483,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETHWithPermit",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2426,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "6353:8:7"
                },
                "parameters": {
                  "id": 2425,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2406,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2483,
                      "src": "6145:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2405,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6145:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2408,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2483,
                      "src": "6168:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2407,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6168:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2410,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2483,
                      "src": "6192:19:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2409,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6192:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2412,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2483,
                      "src": "6221:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2411,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6221:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2414,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2483,
                      "src": "6248:10:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2413,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6248:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2416,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2483,
                      "src": "6268:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2415,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6268:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2418,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2483,
                      "src": "6291:15:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2417,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "6291:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2420,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2483,
                      "src": "6308:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 2419,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "6308:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2422,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2483,
                      "src": "6317:9:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2421,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6317:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2424,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2483,
                      "src": "6328:9:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2423,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6328:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6135:208:7"
                },
                "returnParameters": {
                  "id": 2431,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2428,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2483,
                      "src": "6371:16:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2427,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6371:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2430,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2483,
                      "src": "6389:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2429,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6389:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6370:34:7"
                },
                "scope": 3253,
                "src": "6098:648:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2598,
                  "nodeType": "Block",
                  "src": "6935:603:7",
                  "statements": [
                    {
                      "body": {
                        "id": 2596,
                        "nodeType": "Block",
                        "src": "6984:548:7",
                        "statements": [
                          {
                            "assignments": [
                              2507,
                              2509
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2507,
                                "mutability": "mutable",
                                "name": "input",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2596,
                                "src": "6999:13:7",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 2506,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6999:7:7",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 2509,
                                "mutability": "mutable",
                                "name": "output",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2596,
                                "src": "7014:14:7",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 2508,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7014:7:7",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 2519,
                            "initialValue": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2510,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2489,
                                    "src": "7033:4:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 2512,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2511,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2495,
                                    "src": "7038:1:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7033:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2513,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2489,
                                    "src": "7042:4:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 2517,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2516,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2514,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2495,
                                      "src": "7047:1:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 2515,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7051:1:7",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "7047:5:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7042:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "id": 2518,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7032:22:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                "typeString": "tuple(address,address)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "6998:56:7"
                          },
                          {
                            "assignments": [
                              2521,
                              null
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2521,
                                "mutability": "mutable",
                                "name": "token0",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2596,
                                "src": "7069:14:7",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 2520,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7069:7:7",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              null
                            ],
                            "id": 2527,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2524,
                                  "name": "input",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2507,
                                  "src": "7116:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2525,
                                  "name": "output",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2509,
                                  "src": "7123:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2522,
                                  "name": "MarXDEXV2Library",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7172,
                                  "src": "7088:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                    "typeString": "type(library MarXDEXV2Library)"
                                  }
                                },
                                "id": 2523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sortTokens",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6751,
                                "src": "7088:27:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                                  "typeString": "function (address,address) pure returns (address,address)"
                                }
                              },
                              "id": 2526,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7088:42:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                "typeString": "tuple(address,address)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7068:62:7"
                          },
                          {
                            "assignments": [
                              2529
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2529,
                                "mutability": "mutable",
                                "name": "amountOut",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2596,
                                "src": "7144:14:7",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 2528,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7144:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 2535,
                            "initialValue": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2530,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2486,
                                "src": "7161:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 2534,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2533,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2531,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2495,
                                  "src": "7169:1:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2532,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7173:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "7169:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7161:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7144:31:7"
                          },
                          {
                            "assignments": [
                              2537,
                              2539
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2537,
                                "mutability": "mutable",
                                "name": "amount0Out",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2596,
                                "src": "7190:15:7",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 2536,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7190:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 2539,
                                "mutability": "mutable",
                                "name": "amount1Out",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2596,
                                "src": "7207:15:7",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 2538,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7207:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 2556,
                            "initialValue": {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2542,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2540,
                                  "name": "input",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2507,
                                  "src": "7226:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2541,
                                  "name": "token0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2521,
                                  "src": "7235:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "7226:15:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2549,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2529,
                                    "src": "7268:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 2552,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7284:1:7",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 2551,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7279:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 2550,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7279:4:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 2553,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7279:7:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 2554,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "7267:20:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "id": 2555,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "7226:61:7",
                              "trueExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 2545,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7250:1:7",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 2544,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7245:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 2543,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7245:4:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 2546,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7245:7:7",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2547,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2529,
                                    "src": "7254:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 2548,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "7244:20:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7189:98:7"
                          },
                          {
                            "assignments": [
                              2558
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2558,
                                "mutability": "mutable",
                                "name": "to",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2596,
                                "src": "7301:10:7",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 2557,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7301:7:7",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 2577,
                            "initialValue": {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2564,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2559,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2495,
                                  "src": "7314:1:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2563,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2560,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2489,
                                      "src": "7318:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 2561,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7318:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 2562,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7332:1:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "7318:15:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7314:19:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "id": 2575,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2491,
                                "src": "7393:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 2576,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "7314:82:7",
                              "trueExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2567,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1808,
                                    "src": "7361:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2568,
                                    "name": "output",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2509,
                                    "src": "7370:6:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2569,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2489,
                                      "src": "7378:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 2573,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2572,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 2570,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2495,
                                        "src": "7383:1:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 2571,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7387:1:7",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "7383:5:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7378:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2565,
                                    "name": "MarXDEXV2Library",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7172,
                                    "src": "7336:16:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                      "typeString": "type(library MarXDEXV2Library)"
                                    }
                                  },
                                  "id": 2566,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pairFor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6796,
                                  "src": "7336:24:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address) pure returns (address)"
                                  }
                                },
                                "id": 2574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7336:54:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7301:95:7"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2587,
                                  "name": "amount0Out",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2537,
                                  "src": "7480:10:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2588,
                                  "name": "amount1Out",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2539,
                                  "src": "7492:10:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2589,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2558,
                                  "src": "7504:2:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 2592,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7518:1:7",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 2591,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "7508:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (bytes memory)"
                                    },
                                    "typeName": {
                                      "id": 2590,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7512:5:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_storage_ptr",
                                        "typeString": "bytes"
                                      }
                                    }
                                  },
                                  "id": 2593,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7508:12:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2581,
                                          "name": "factory",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1808,
                                          "src": "7450:7:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2582,
                                          "name": "input",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2507,
                                          "src": "7459:5:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2583,
                                          "name": "output",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2509,
                                          "src": "7466:6:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2579,
                                          "name": "MarXDEXV2Library",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7172,
                                          "src": "7425:16:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                            "typeString": "type(library MarXDEXV2Library)"
                                          }
                                        },
                                        "id": 2580,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "pairFor",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6796,
                                        "src": "7425:24:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                          "typeString": "function (address,address,address) pure returns (address)"
                                        }
                                      },
                                      "id": 2584,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7425:48:7",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2578,
                                    "name": "IMarXDEXV2Pair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1795,
                                    "src": "7410:14:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                      "typeString": "type(contract IMarXDEXV2Pair)"
                                    }
                                  },
                                  "id": 2585,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7410:64:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                    "typeString": "contract IMarXDEXV2Pair"
                                  }
                                },
                                "id": 2586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "swap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1779,
                                "src": "7410:69:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                                  "typeString": "function (uint256,uint256,address,bytes memory) external"
                                }
                              },
                              "id": 2594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7410:111:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2595,
                            "nodeType": "ExpressionStatement",
                            "src": "7410:111:7"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2502,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2497,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2495,
                          "src": "6958:1:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2498,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2489,
                              "src": "6962:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 2499,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6962:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 2500,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6976:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "6962:15:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6958:19:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 2597,
                      "initializationExpression": {
                        "assignments": [
                          2495
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2495,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 2597,
                            "src": "6950:6:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2494,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "6950:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2496,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6950:6:7"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "6979:3:7",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 2503,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2495,
                            "src": "6979:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2505,
                        "nodeType": "ExpressionStatement",
                        "src": "6979:3:7"
                      },
                      "nodeType": "ForStatement",
                      "src": "6945:587:7"
                    }
                  ]
                },
                "documentation": null,
                "id": 2599,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_swap",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2492,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2486,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2599,
                      "src": "6868:21:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2484,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "6868:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2485,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "6868:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2489,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2599,
                      "src": "6891:21:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2487,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6891:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2488,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "6891:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2491,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2599,
                      "src": "6914:11:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2490,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6914:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6867:59:7"
                },
                "returnParameters": {
                  "id": 2493,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "6935:0:7"
                },
                "scope": 3253,
                "src": "6853:685:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "baseFunctions": [
                  6455
                ],
                "body": {
                  "id": 2670,
                  "nodeType": "Block",
                  "src": "7776:352:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2627,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2620,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2618,
                          "src": "7786:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2623,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1808,
                              "src": "7827:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2624,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2601,
                              "src": "7836:8:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2625,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2606,
                              "src": "7846:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2621,
                              "name": "MarXDEXV2Library",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7172,
                              "src": "7796:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                "typeString": "type(library MarXDEXV2Library)"
                              }
                            },
                            "id": 2622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsOut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7086,
                            "src": "7796:30:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 2626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7796:55:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "7786:65:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 2628,
                      "nodeType": "ExpressionStatement",
                      "src": "7786:65:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2637,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2630,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2618,
                                "src": "7869:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 2635,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2631,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2618,
                                    "src": "7877:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 2632,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7877:14:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2633,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7894:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "7877:18:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7869:27:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2636,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2603,
                              "src": "7900:12:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7869:43:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 2638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7914:45:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 2629,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "7861:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2639,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7861:99:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2640,
                      "nodeType": "ExpressionStatement",
                      "src": "7861:99:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2644,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2606,
                              "src": "8002:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 2646,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2645,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8007:1:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8002:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2647,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "8011:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2648,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8011:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2651,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1808,
                                "src": "8048:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2652,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2606,
                                  "src": "8057:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 2654,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2653,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8062:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8057:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2655,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2606,
                                  "src": "8066:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 2657,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2656,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8071:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8066:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2649,
                                "name": "MarXDEXV2Library",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7172,
                                "src": "8023:16:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                  "typeString": "type(library MarXDEXV2Library)"
                                }
                              },
                              "id": 2650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6796,
                              "src": "8023:24:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 2658,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8023:51:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2659,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2618,
                              "src": "8076:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 2661,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8084:1:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8076:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2641,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "7970:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 2643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "7970:31:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 2662,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7970:117:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2663,
                      "nodeType": "ExpressionStatement",
                      "src": "7970:117:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2665,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2618,
                            "src": "8103:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2666,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2606,
                            "src": "8112:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2667,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2608,
                            "src": "8118:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2664,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2599,
                          "src": "8097:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 2668,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8097:24:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2669,
                      "nodeType": "ExpressionStatement",
                      "src": "8097:24:7"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "38ed1739",
                "id": 2671,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2614,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2610,
                        "src": "7734:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2615,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2613,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1825,
                      "src": "7727:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "7727:16:7"
                  }
                ],
                "name": "swapExactTokensForTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2612,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "7718:8:7"
                },
                "parameters": {
                  "id": 2611,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2601,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2671,
                      "src": "7586:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2600,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7586:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2603,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2671,
                      "src": "7609:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2602,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7609:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2606,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2671,
                      "src": "7636:23:7",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2604,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7636:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2605,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "7636:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2608,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2671,
                      "src": "7669:10:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2607,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7669:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2610,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2671,
                      "src": "7689:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2609,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7689:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7576:132:7"
                },
                "returnParameters": {
                  "id": 2619,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2618,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2671,
                      "src": "7753:21:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2616,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7753:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2617,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "7753:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7752:23:7"
                },
                "scope": 3253,
                "src": "7543:585:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6472
                ],
                "body": {
                  "id": 2739,
                  "nodeType": "Block",
                  "src": "8366:330:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2699,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2692,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2690,
                          "src": "8376:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2695,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1808,
                              "src": "8416:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2696,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2673,
                              "src": "8425:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2697,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2678,
                              "src": "8436:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2693,
                              "name": "MarXDEXV2Library",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7172,
                              "src": "8386:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                "typeString": "type(library MarXDEXV2Library)"
                              }
                            },
                            "id": 2694,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsIn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7171,
                            "src": "8386:29:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 2698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8386:55:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "8376:65:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 2700,
                      "nodeType": "ExpressionStatement",
                      "src": "8376:65:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2706,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2702,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2690,
                                "src": "8459:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 2704,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2703,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8467:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8459:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2705,
                              "name": "amountInMax",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2675,
                              "src": "8473:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8459:25:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a204558434553534956455f494e5055545f414d4f554e54",
                            "id": 2707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8486:41:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3e1b1d3ba66318512221fd088332a90c6e56c7ab54ef486a6962ec70beeda886",
                              "typeString": "literal_string \"MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3e1b1d3ba66318512221fd088332a90c6e56c7ab54ef486a6962ec70beeda886",
                              "typeString": "literal_string \"MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 2701,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "8451:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2708,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8451:77:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2709,
                      "nodeType": "ExpressionStatement",
                      "src": "8451:77:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2713,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2678,
                              "src": "8570:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 2715,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2714,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8575:1:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8570:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2716,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "8579:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8579:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2720,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1808,
                                "src": "8616:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2721,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2678,
                                  "src": "8625:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 2723,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2722,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8630:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8625:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2724,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2678,
                                  "src": "8634:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 2726,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2725,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8639:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8634:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2718,
                                "name": "MarXDEXV2Library",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7172,
                                "src": "8591:16:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                  "typeString": "type(library MarXDEXV2Library)"
                                }
                              },
                              "id": 2719,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6796,
                              "src": "8591:24:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 2727,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8591:51:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2728,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2690,
                              "src": "8644:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 2730,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2729,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8652:1:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8644:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2710,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "8538:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 2712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "8538:31:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 2731,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8538:117:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2732,
                      "nodeType": "ExpressionStatement",
                      "src": "8538:117:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2734,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2690,
                            "src": "8671:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2735,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2678,
                            "src": "8680:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2736,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2680,
                            "src": "8686:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2733,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2599,
                          "src": "8665:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 2737,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8665:24:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2738,
                      "nodeType": "ExpressionStatement",
                      "src": "8665:24:7"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "8803dbee",
                "id": 2740,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2686,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2682,
                        "src": "8324:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2687,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2685,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1825,
                      "src": "8317:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "8317:16:7"
                  }
                ],
                "name": "swapTokensForExactTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2684,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "8308:8:7"
                },
                "parameters": {
                  "id": 2683,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2673,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2740,
                      "src": "8176:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2672,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8176:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2675,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2740,
                      "src": "8200:16:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2674,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8200:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2678,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2740,
                      "src": "8226:23:7",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2676,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8226:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2677,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8226:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2680,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2740,
                      "src": "8259:10:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2679,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8259:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2682,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2740,
                      "src": "8279:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2681,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8279:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8166:132:7"
                },
                "returnParameters": {
                  "id": 2691,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2690,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2740,
                      "src": "8343:21:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2688,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8343:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2689,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8343:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8342:23:7"
                },
                "scope": 3253,
                "src": "8133:563:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6487
                ],
                "body": {
                  "id": 2827,
                  "nodeType": "Block",
                  "src": "8922:446:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2760,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2745,
                                "src": "8940:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 2762,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2761,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8945:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8940:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2763,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1811,
                              "src": "8951:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "8940:15:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e56414c49445f50415448",
                            "id": 2765,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8957:31:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            },
                            "value": "MarXDEXV2Router: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            }
                          ],
                          "id": 2759,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "8932:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2766,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8932:57:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2767,
                      "nodeType": "ExpressionStatement",
                      "src": "8932:57:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2776,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2768,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2757,
                          "src": "8999:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2771,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1808,
                              "src": "9040:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2772,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "9049:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2773,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9049:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2774,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2745,
                              "src": "9060:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2769,
                              "name": "MarXDEXV2Library",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7172,
                              "src": "9009:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                "typeString": "type(library MarXDEXV2Library)"
                              }
                            },
                            "id": 2770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsOut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7086,
                            "src": "9009:30:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 2775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9009:56:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "8999:66:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 2777,
                      "nodeType": "ExpressionStatement",
                      "src": "8999:66:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2779,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2757,
                                "src": "9083:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 2784,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2780,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2757,
                                    "src": "9091:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 2781,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9091:14:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2782,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9108:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "9091:18:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9083:27:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2785,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2742,
                              "src": "9114:12:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9083:43:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 2787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9128:45:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 2778,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "9075:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2788,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9075:99:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2789,
                      "nodeType": "ExpressionStatement",
                      "src": "9075:99:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2791,
                                  "name": "WETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1811,
                                  "src": "9190:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2790,
                                "name": "IWETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6700,
                                "src": "9184:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                  "typeString": "type(contract IWETH)"
                                }
                              },
                              "id": 2792,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9184:11:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$6700",
                                "typeString": "contract IWETH"
                              }
                            },
                            "id": 2793,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6685,
                            "src": "9184:19:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 2797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2794,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2757,
                                "src": "9211:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 2796,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2795,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9219:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9211:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "9184:38:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                            "typeString": "function () payable external"
                          }
                        },
                        "id": 2798,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9184:40:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2799,
                      "nodeType": "ExpressionStatement",
                      "src": "9184:40:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2807,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1808,
                                    "src": "9287:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2808,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2745,
                                      "src": "9296:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 2810,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 2809,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9301:1:7",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9296:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 2811,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2745,
                                      "src": "9305:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 2813,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 2812,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9310:1:7",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9305:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2805,
                                    "name": "MarXDEXV2Library",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7172,
                                    "src": "9262:16:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                      "typeString": "type(library MarXDEXV2Library)"
                                    }
                                  },
                                  "id": 2806,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pairFor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6796,
                                  "src": "9262:24:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address) pure returns (address)"
                                  }
                                },
                                "id": 2814,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9262:51:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2815,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2757,
                                  "src": "9315:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2817,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2816,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9323:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9315:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2802,
                                    "name": "WETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1811,
                                    "src": "9247:4:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2801,
                                  "name": "IWETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6700,
                                  "src": "9241:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                    "typeString": "type(contract IWETH)"
                                  }
                                },
                                "id": 2803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9241:11:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWETH_$6700",
                                  "typeString": "contract IWETH"
                                }
                              },
                              "id": 2804,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6694,
                              "src": "9241:20:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 2818,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9241:85:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 2800,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "9234:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 2819,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9234:93:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2820,
                      "nodeType": "ExpressionStatement",
                      "src": "9234:93:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2822,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2757,
                            "src": "9343:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2823,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2745,
                            "src": "9352:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2824,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2747,
                            "src": "9358:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2821,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2599,
                          "src": "9337:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 2825,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9337:24:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2826,
                      "nodeType": "ExpressionStatement",
                      "src": "9337:24:7"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "7ff36ab5",
                "id": 2828,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2753,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2749,
                        "src": "8868:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2754,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2752,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1825,
                      "src": "8861:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "8861:16:7"
                  }
                ],
                "name": "swapExactETHForTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2751,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "8828:8:7"
                },
                "parameters": {
                  "id": 2750,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2742,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2828,
                      "src": "8732:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2741,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8732:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2745,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2828,
                      "src": "8751:23:7",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2743,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8751:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2744,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8751:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2747,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2828,
                      "src": "8776:10:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2746,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8776:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2749,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2828,
                      "src": "8788:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2748,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8788:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8731:71:7"
                },
                "returnParameters": {
                  "id": 2758,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2757,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2828,
                      "src": "8895:21:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2755,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8895:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2756,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8895:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8894:23:7"
                },
                "scope": 3253,
                "src": "8701:667:7",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6504
                ],
                "body": {
                  "id": 2935,
                  "nodeType": "Block",
                  "src": "9593:554:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2857,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2850,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2835,
                                "src": "9611:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 2855,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2854,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2851,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2835,
                                    "src": "9616:4:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 2852,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9616:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2853,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9630:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "9616:15:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9611:21:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2856,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1811,
                              "src": "9636:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "9611:29:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e56414c49445f50415448",
                            "id": 2858,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9642:31:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            },
                            "value": "MarXDEXV2Router: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            }
                          ],
                          "id": 2849,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "9603:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2859,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9603:71:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2860,
                      "nodeType": "ExpressionStatement",
                      "src": "9603:71:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2868,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2861,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2847,
                          "src": "9684:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2864,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1808,
                              "src": "9724:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2865,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2830,
                              "src": "9733:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2866,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2835,
                              "src": "9744:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2862,
                              "name": "MarXDEXV2Library",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7172,
                              "src": "9694:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                "typeString": "type(library MarXDEXV2Library)"
                              }
                            },
                            "id": 2863,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsIn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7171,
                            "src": "9694:29:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 2867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9694:55:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "9684:65:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 2869,
                      "nodeType": "ExpressionStatement",
                      "src": "9684:65:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2875,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2871,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2847,
                                "src": "9767:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 2873,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2872,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9775:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9767:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2874,
                              "name": "amountInMax",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2832,
                              "src": "9781:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9767:25:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a204558434553534956455f494e5055545f414d4f554e54",
                            "id": 2876,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9794:41:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3e1b1d3ba66318512221fd088332a90c6e56c7ab54ef486a6962ec70beeda886",
                              "typeString": "literal_string \"MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3e1b1d3ba66318512221fd088332a90c6e56c7ab54ef486a6962ec70beeda886",
                              "typeString": "literal_string \"MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 2870,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "9759:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9759:77:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2878,
                      "nodeType": "ExpressionStatement",
                      "src": "9759:77:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2882,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2835,
                              "src": "9878:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 2884,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2883,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9883:1:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9878:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2885,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "9887:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2886,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9887:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2889,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1808,
                                "src": "9924:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2890,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2835,
                                  "src": "9933:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 2892,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2891,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9938:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9933:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2893,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2835,
                                  "src": "9942:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 2895,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2894,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9947:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9942:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2887,
                                "name": "MarXDEXV2Library",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7172,
                                "src": "9899:16:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                  "typeString": "type(library MarXDEXV2Library)"
                                }
                              },
                              "id": 2888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6796,
                              "src": "9899:24:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 2896,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9899:51:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2897,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2847,
                              "src": "9952:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 2899,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2898,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9960:1:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9952:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2879,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "9846:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 2881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "9846:31:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 2900,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9846:117:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2901,
                      "nodeType": "ExpressionStatement",
                      "src": "9846:117:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2903,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2847,
                            "src": "9979:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2904,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2835,
                            "src": "9988:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2907,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "10002:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router01_$3253",
                                  "typeString": "contract MarXDEXV2Router01"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router01_$3253",
                                  "typeString": "contract MarXDEXV2Router01"
                                }
                              ],
                              "id": 2906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9994:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2905,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "9994:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 2908,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9994:13:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 2902,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2599,
                          "src": "9973:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 2909,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9973:35:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2910,
                      "nodeType": "ExpressionStatement",
                      "src": "9973:35:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2915,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2847,
                              "src": "10039:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 2920,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2919,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2916,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2847,
                                  "src": "10047:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2917,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10047:14:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10064:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "10047:18:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10039:27:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2912,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1811,
                                "src": "10024:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2911,
                              "name": "IWETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6700,
                              "src": "10018:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                "typeString": "type(contract IWETH)"
                              }
                            },
                            "id": 2913,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10018:11:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$6700",
                              "typeString": "contract IWETH"
                            }
                          },
                          "id": 2914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6699,
                          "src": "10018:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256) external"
                          }
                        },
                        "id": 2921,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10018:49:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2922,
                      "nodeType": "ExpressionStatement",
                      "src": "10018:49:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2926,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2837,
                            "src": "10108:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2927,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2847,
                              "src": "10112:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 2932,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2931,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2928,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2847,
                                  "src": "10120:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2929,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10120:14:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 2930,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10137:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "10120:18:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10112:27:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2923,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "10077:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 2925,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1489,
                          "src": "10077:30:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 2933,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10077:63:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2934,
                      "nodeType": "ExpressionStatement",
                      "src": "10077:63:7"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "4a25d94a",
                "id": 2936,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2843,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2839,
                        "src": "9539:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2844,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2842,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1825,
                      "src": "9532:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "9532:16:7"
                  }
                ],
                "name": "swapTokensForExactETH",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2841,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "9515:8:7"
                },
                "parameters": {
                  "id": 2840,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2830,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2936,
                      "src": "9404:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2829,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9404:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2832,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2936,
                      "src": "9420:16:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2831,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9420:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2835,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2936,
                      "src": "9438:23:7",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2833,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9438:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2834,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9438:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2837,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2936,
                      "src": "9463:10:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2836,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9463:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2839,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2936,
                      "src": "9475:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2838,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9475:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9403:86:7"
                },
                "returnParameters": {
                  "id": 2848,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2847,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2936,
                      "src": "9566:21:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2845,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9566:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2846,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9566:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9565:23:7"
                },
                "scope": 3253,
                "src": "9373:774:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6521
                ],
                "body": {
                  "id": 3046,
                  "nodeType": "Block",
                  "src": "10372:576:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2965,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2958,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2943,
                                "src": "10390:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 2963,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2962,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2959,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2943,
                                    "src": "10395:4:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 2960,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "10395:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2961,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10409:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "10395:15:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10390:21:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2964,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1811,
                              "src": "10415:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "10390:29:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e56414c49445f50415448",
                            "id": 2966,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10421:31:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            },
                            "value": "MarXDEXV2Router: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            }
                          ],
                          "id": 2957,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "10382:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2967,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10382:71:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2968,
                      "nodeType": "ExpressionStatement",
                      "src": "10382:71:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2976,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2969,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2955,
                          "src": "10463:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2972,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1808,
                              "src": "10504:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2973,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2938,
                              "src": "10513:8:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2974,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2943,
                              "src": "10523:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2970,
                              "name": "MarXDEXV2Library",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7172,
                              "src": "10473:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                "typeString": "type(library MarXDEXV2Library)"
                              }
                            },
                            "id": 2971,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsOut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7086,
                            "src": "10473:30:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 2975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10473:55:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "10463:65:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 2977,
                      "nodeType": "ExpressionStatement",
                      "src": "10463:65:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2986,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2979,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2955,
                                "src": "10546:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 2984,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2983,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2980,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2955,
                                    "src": "10554:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 2981,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "10554:14:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 2982,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10571:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "10554:18:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10546:27:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2985,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2940,
                              "src": "10577:12:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10546:43:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 2987,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10591:45:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 2978,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "10538:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10538:99:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2989,
                      "nodeType": "ExpressionStatement",
                      "src": "10538:99:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2993,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2943,
                              "src": "10679:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 2995,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2994,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10684:1:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10679:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2996,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "10688:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2997,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10688:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3000,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1808,
                                "src": "10725:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3001,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2943,
                                  "src": "10734:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 3003,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3002,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10739:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10734:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3004,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2943,
                                  "src": "10743:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 3006,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 3005,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10748:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10743:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2998,
                                "name": "MarXDEXV2Library",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7172,
                                "src": "10700:16:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                  "typeString": "type(library MarXDEXV2Library)"
                                }
                              },
                              "id": 2999,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6796,
                              "src": "10700:24:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 3007,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10700:51:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3008,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2955,
                              "src": "10753:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3010,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10761:1:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10753:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2990,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "10647:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 2992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "10647:31:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 3011,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10647:117:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3012,
                      "nodeType": "ExpressionStatement",
                      "src": "10647:117:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3014,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2955,
                            "src": "10780:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3015,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2943,
                            "src": "10789:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3018,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "10803:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router01_$3253",
                                  "typeString": "contract MarXDEXV2Router01"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router01_$3253",
                                  "typeString": "contract MarXDEXV2Router01"
                                }
                              ],
                              "id": 3017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10795:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3016,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10795:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3019,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10795:13:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 3013,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2599,
                          "src": "10774:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 3020,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10774:35:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3021,
                      "nodeType": "ExpressionStatement",
                      "src": "10774:35:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3026,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2955,
                              "src": "10840:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3031,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3027,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2955,
                                  "src": "10848:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3028,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10848:14:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 3029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10865:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "10848:18:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10840:27:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3023,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1811,
                                "src": "10825:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3022,
                              "name": "IWETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6700,
                              "src": "10819:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                "typeString": "type(contract IWETH)"
                              }
                            },
                            "id": 3024,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10819:11:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$6700",
                              "typeString": "contract IWETH"
                            }
                          },
                          "id": 3025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6699,
                          "src": "10819:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256) external"
                          }
                        },
                        "id": 3032,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10819:49:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3033,
                      "nodeType": "ExpressionStatement",
                      "src": "10819:49:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3037,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2945,
                            "src": "10909:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3038,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2955,
                              "src": "10913:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3043,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3039,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2955,
                                  "src": "10921:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3040,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "10921:14:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 3041,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10938:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "10921:18:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10913:27:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3034,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "10878:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1489,
                          "src": "10878:30:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 3044,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10878:63:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3045,
                      "nodeType": "ExpressionStatement",
                      "src": "10878:63:7"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "18cbafe5",
                "id": 3047,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2951,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2947,
                        "src": "10318:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2952,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2950,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1825,
                      "src": "10311:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "10311:16:7"
                  }
                ],
                "name": "swapExactTokensForETH",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2949,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "10294:8:7"
                },
                "parameters": {
                  "id": 2948,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2938,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3047,
                      "src": "10183:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2937,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10183:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2940,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3047,
                      "src": "10198:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2939,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10198:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2943,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3047,
                      "src": "10217:23:7",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2941,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10217:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2942,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10217:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2945,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3047,
                      "src": "10242:10:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2944,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10242:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2947,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3047,
                      "src": "10254:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2946,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10254:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10182:86:7"
                },
                "returnParameters": {
                  "id": 2956,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2955,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3047,
                      "src": "10345:21:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2953,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "10345:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2954,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10345:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10344:23:7"
                },
                "scope": 3253,
                "src": "10152:796:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6536
                ],
                "body": {
                  "id": 3151,
                  "nodeType": "Block",
                  "src": "11171:552:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 3071,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3067,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3052,
                                "src": "11189:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3069,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3068,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11194:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11189:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3070,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1811,
                              "src": "11200:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "11189:15:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e56414c49445f50415448",
                            "id": 3072,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11206:31:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            },
                            "value": "MarXDEXV2Router: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            }
                          ],
                          "id": 3066,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "11181:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3073,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11181:57:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3074,
                      "nodeType": "ExpressionStatement",
                      "src": "11181:57:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3082,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 3075,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3064,
                          "src": "11248:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3078,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1808,
                              "src": "11288:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3079,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3049,
                              "src": "11297:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3080,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3052,
                              "src": "11308:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3076,
                              "name": "MarXDEXV2Library",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7172,
                              "src": "11258:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                "typeString": "type(library MarXDEXV2Library)"
                              }
                            },
                            "id": 3077,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsIn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7171,
                            "src": "11258:29:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 3081,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11258:55:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "11248:65:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 3083,
                      "nodeType": "ExpressionStatement",
                      "src": "11248:65:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3090,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3085,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3064,
                                "src": "11331:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3087,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3086,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11339:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11331:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3088,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11345:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3089,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11345:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11331:23:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a204558434553534956455f494e5055545f414d4f554e54",
                            "id": 3091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11356:41:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3e1b1d3ba66318512221fd088332a90c6e56c7ab54ef486a6962ec70beeda886",
                              "typeString": "literal_string \"MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3e1b1d3ba66318512221fd088332a90c6e56c7ab54ef486a6962ec70beeda886",
                              "typeString": "literal_string \"MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 3084,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "11323:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3092,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11323:75:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3093,
                      "nodeType": "ExpressionStatement",
                      "src": "11323:75:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3095,
                                  "name": "WETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1811,
                                  "src": "11414:4:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3094,
                                "name": "IWETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6700,
                                "src": "11408:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                  "typeString": "type(contract IWETH)"
                                }
                              },
                              "id": 3096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11408:11:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$6700",
                                "typeString": "contract IWETH"
                              }
                            },
                            "id": 3097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6685,
                            "src": "11408:19:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 3101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3098,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3064,
                                "src": "11435:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3100,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3099,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11443:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11435:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "11408:38:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                            "typeString": "function () payable external"
                          }
                        },
                        "id": 3102,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11408:40:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3103,
                      "nodeType": "ExpressionStatement",
                      "src": "11408:40:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3111,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1808,
                                    "src": "11511:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3112,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3052,
                                      "src": "11520:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 3114,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 3113,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11525:1:7",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11520:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3115,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3052,
                                      "src": "11529:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 3117,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 3116,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11534:1:7",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11529:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3109,
                                    "name": "MarXDEXV2Library",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7172,
                                    "src": "11486:16:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                      "typeString": "type(library MarXDEXV2Library)"
                                    }
                                  },
                                  "id": 3110,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pairFor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6796,
                                  "src": "11486:24:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address) pure returns (address)"
                                  }
                                },
                                "id": 3118,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11486:51:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3119,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3064,
                                  "src": "11539:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3121,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3120,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11547:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11539:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3106,
                                    "name": "WETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1811,
                                    "src": "11471:4:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3105,
                                  "name": "IWETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6700,
                                  "src": "11465:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                    "typeString": "type(contract IWETH)"
                                  }
                                },
                                "id": 3107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11465:11:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWETH_$6700",
                                  "typeString": "contract IWETH"
                                }
                              },
                              "id": 3108,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6694,
                              "src": "11465:20:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 3122,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11465:85:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 3104,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "11458:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 3123,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11458:93:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3124,
                      "nodeType": "ExpressionStatement",
                      "src": "11458:93:7"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3126,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3064,
                            "src": "11567:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3127,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3052,
                            "src": "11576:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3128,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3054,
                            "src": "11582:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3125,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2599,
                          "src": "11561:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 3129,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11561:24:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3130,
                      "nodeType": "ExpressionStatement",
                      "src": "11561:24:7"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3136,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3131,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "11599:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "11599:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3133,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3064,
                            "src": "11611:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 3135,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11619:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11611:10:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11599:22:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3150,
                      "nodeType": "IfStatement",
                      "src": "11595:94:7",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3140,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11654:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3141,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11654:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3142,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "11666:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3143,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11666:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3144,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3064,
                                  "src": "11678:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3146,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3145,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11686:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11678:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11666:22:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3137,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1490,
                              "src": "11623:14:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 3139,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferETH",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1489,
                            "src": "11623:30:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 3148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11623:66:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3149,
                        "nodeType": "ExpressionStatement",
                        "src": "11623:66:7"
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "fb3bdb41",
                "id": 3152,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3060,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3056,
                        "src": "11117:8:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3061,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 3059,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1825,
                      "src": "11110:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "11110:16:7"
                  }
                ],
                "name": "swapETHForExactTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3058,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "11077:8:7"
                },
                "parameters": {
                  "id": 3057,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3049,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3152,
                      "src": "10984:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3048,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10984:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3052,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3152,
                      "src": "11000:23:7",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3050,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11000:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3051,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "11000:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3054,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3152,
                      "src": "11025:10:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3053,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11025:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3056,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3152,
                      "src": "11037:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3055,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11037:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10983:68:7"
                },
                "returnParameters": {
                  "id": 3065,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3064,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3152,
                      "src": "11144:21:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3062,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "11144:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3063,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "11144:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11143:23:7"
                },
                "scope": 3253,
                "src": "10953:770:7",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6547
                ],
                "body": {
                  "id": 3171,
                  "nodeType": "Block",
                  "src": "11832:75:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3166,
                            "name": "amountA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3154,
                            "src": "11872:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3167,
                            "name": "reserveA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3156,
                            "src": "11881:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3168,
                            "name": "reserveB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3158,
                            "src": "11891:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3164,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "11849:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 3165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "quote",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6885,
                          "src": "11849:22:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 3169,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11849:51:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 3163,
                      "id": 3170,
                      "nodeType": "Return",
                      "src": "11842:58:7"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "ad615dec",
                "id": 3172,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "quote",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3160,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "11800:8:7"
                },
                "parameters": {
                  "id": 3159,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3154,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3172,
                      "src": "11744:12:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3153,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11744:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3156,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3172,
                      "src": "11758:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3155,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11758:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3158,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3172,
                      "src": "11773:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3157,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11773:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11743:44:7"
                },
                "returnParameters": {
                  "id": 3163,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3162,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3172,
                      "src": "11818:12:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3161,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11818:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11817:14:7"
                },
                "scope": 3253,
                "src": "11729:178:7",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6558
                ],
                "body": {
                  "id": 3191,
                  "nodeType": "Block",
                  "src": "12029:86:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3186,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3174,
                            "src": "12076:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3187,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3176,
                            "src": "12086:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3188,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3178,
                            "src": "12097:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3184,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "12046:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 3185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountOut",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6945,
                          "src": "12046:29:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 3189,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12046:62:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 3183,
                      "id": 3190,
                      "nodeType": "Return",
                      "src": "12039:69:7"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "054d50d4",
                "id": 3192,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountOut",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3180,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "11995:8:7"
                },
                "parameters": {
                  "id": 3179,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3174,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3192,
                      "src": "11935:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3173,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11935:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3176,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3192,
                      "src": "11950:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3175,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11950:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3178,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3192,
                      "src": "11966:15:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3177,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11966:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11934:48:7"
                },
                "returnParameters": {
                  "id": 3183,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3182,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3192,
                      "src": "12013:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3181,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12013:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12012:16:7"
                },
                "scope": 3253,
                "src": "11913:202:7",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6569
                ],
                "body": {
                  "id": 3211,
                  "nodeType": "Block",
                  "src": "12236:87:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3206,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3194,
                            "src": "12283:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3207,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3196,
                            "src": "12294:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3208,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3198,
                            "src": "12305:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3204,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "12253:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 3205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountOut",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6945,
                          "src": "12253:29:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 3209,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12253:63:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 3203,
                      "id": 3210,
                      "nodeType": "Return",
                      "src": "12246:70:7"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "85f8c259",
                "id": 3212,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountIn",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3200,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "12203:8:7"
                },
                "parameters": {
                  "id": 3199,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3194,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3212,
                      "src": "12142:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3193,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12142:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3196,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3212,
                      "src": "12158:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3195,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12158:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3198,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3212,
                      "src": "12174:15:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3197,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12174:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12141:49:7"
                },
                "returnParameters": {
                  "id": 3203,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3202,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3212,
                      "src": "12221:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3201,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12221:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12220:15:7"
                },
                "scope": 3253,
                "src": "12121:202:7",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6580
                ],
                "body": {
                  "id": 3231,
                  "nodeType": "Block",
                  "src": "12443:79:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3226,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1808,
                            "src": "12491:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3227,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3214,
                            "src": "12500:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3228,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3217,
                            "src": "12510:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3224,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "12460:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 3225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountsOut",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7086,
                          "src": "12460:30:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                          }
                        },
                        "id": 3229,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12460:55:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "functionReturnParameters": 3223,
                      "id": 3230,
                      "nodeType": "Return",
                      "src": "12453:62:7"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d06ca61f",
                "id": 3232,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountsOut",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3219,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "12402:8:7"
                },
                "parameters": {
                  "id": 3218,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3214,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3232,
                      "src": "12352:13:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3213,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12352:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3217,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3232,
                      "src": "12367:21:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3215,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12367:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3216,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "12367:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12351:38:7"
                },
                "returnParameters": {
                  "id": 3223,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3222,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3232,
                      "src": "12420:21:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3220,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "12420:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3221,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "12420:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12419:23:7"
                },
                "scope": 3253,
                "src": "12329:193:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6591
                ],
                "body": {
                  "id": 3251,
                  "nodeType": "Block",
                  "src": "12642:79:7",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3246,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1808,
                            "src": "12689:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3247,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3234,
                            "src": "12698:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3248,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3237,
                            "src": "12709:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3244,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "12659:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 3245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountsIn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7171,
                          "src": "12659:29:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                          }
                        },
                        "id": 3249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12659:55:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "functionReturnParameters": 3243,
                      "id": 3250,
                      "nodeType": "Return",
                      "src": "12652:62:7"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "1f00ca74",
                "id": 3252,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountsIn",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3239,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "12601:8:7"
                },
                "parameters": {
                  "id": 3238,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3234,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3252,
                      "src": "12550:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3233,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12550:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3237,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3252,
                      "src": "12566:21:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3235,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12566:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3236,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "12566:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12549:39:7"
                },
                "returnParameters": {
                  "id": 3243,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3242,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3252,
                      "src": "12619:21:7",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3240,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "12619:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3241,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "12619:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12618:23:7"
                },
                "scope": 3253,
                "src": "12528:193:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 3254,
            "src": "335:12388:7"
          }
        ],
        "src": "0:12724:7"
      }
    },
    "contracts/MarXDEXV2Router02.sol": {
      "id": 8,
      "AST": {
        "absolutePath": "contracts/MarXDEXV2Router02.sol",
        "exportedSymbols": {
          "MarXDEXV2Router02": [
            5291
          ]
        },
        "id": 5292,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 3255,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".6"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:23:8"
          },
          {
            "absolutePath": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Factory.sol",
            "file": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Factory.sol",
            "id": 3256,
            "nodeType": "ImportDirective",
            "scope": 5292,
            "sourceUnit": 1554,
            "src": "25:79:8",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/TransferHelper.sol",
            "file": "@marx-dex/marx-dex-lib/contracts/libraries/TransferHelper.sol",
            "id": 3257,
            "nodeType": "ImportDirective",
            "scope": 5292,
            "sourceUnit": 1491,
            "src": "105:71:8",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMarXDEXV2Router02.sol",
            "file": "./interfaces/IMarXDEXV2Router02.sol",
            "id": 3258,
            "nodeType": "ImportDirective",
            "scope": 5292,
            "sourceUnit": 6681,
            "src": "178:45:8",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/MarXDEXV2Library.sol",
            "file": "./libraries/MarXDEXV2Library.sol",
            "id": 3259,
            "nodeType": "ImportDirective",
            "scope": 5292,
            "sourceUnit": 7173,
            "src": "224:42:8",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/SafeMath.sol",
            "file": "./libraries/SafeMath.sol",
            "id": 3260,
            "nodeType": "ImportDirective",
            "scope": 5292,
            "sourceUnit": 7821,
            "src": "267:34:8",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20.sol",
            "file": "./interfaces/IERC20.sol",
            "id": 3261,
            "nodeType": "ImportDirective",
            "scope": 5292,
            "sourceUnit": 6285,
            "src": "302:33:8",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IWETH.sol",
            "file": "./interfaces/IWETH.sol",
            "id": 3262,
            "nodeType": "ImportDirective",
            "scope": 5292,
            "sourceUnit": 6701,
            "src": "336:32:8",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 3263,
                  "name": "IMarXDEXV2Router02",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6680,
                  "src": "400:18:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMarXDEXV2Router02_$6680",
                    "typeString": "contract IMarXDEXV2Router02"
                  }
                },
                "id": 3264,
                "nodeType": "InheritanceSpecifier",
                "src": "400:18:8"
              }
            ],
            "contractDependencies": [
              6592,
              6680
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 5291,
            "linearizedBaseContracts": [
              5291,
              6680,
              6592
            ],
            "name": "MarXDEXV2Router02",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 3267,
                "libraryName": {
                  "contractScope": null,
                  "id": 3265,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 7820,
                  "src": "431:8:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$7820",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "425:24:8",
                "typeName": {
                  "id": 3266,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "444:4:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "baseFunctions": [
                  6291
                ],
                "constant": false,
                "functionSelector": "c45a0155",
                "id": 3270,
                "mutability": "immutable",
                "name": "factory",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 3269,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "480:8:8"
                },
                "scope": 5291,
                "src": "455:41:8",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 3268,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "455:7:8",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6296
                ],
                "constant": false,
                "functionSelector": "ad5c4648",
                "id": 3273,
                "mutability": "immutable",
                "name": "WETH",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 3272,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "527:8:8"
                },
                "scope": 5291,
                "src": "502:38:8",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 3271,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "502:7:8",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 3286,
                  "nodeType": "Block",
                  "src": "578:92:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3281,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3278,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3275,
                              "src": "596:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3279,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "608:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 3280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "608:15:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "596:27:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a2045585049524544",
                            "id": 3282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "625:26:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_840318b5162dc82792f7cb010822a6f0cb487637017aa64b957f4807e9bfc629",
                              "typeString": "literal_string \"MarXDEXV2Router: EXPIRED\""
                            },
                            "value": "MarXDEXV2Router: EXPIRED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_840318b5162dc82792f7cb010822a6f0cb487637017aa64b957f4807e9bfc629",
                              "typeString": "literal_string \"MarXDEXV2Router: EXPIRED\""
                            }
                          ],
                          "id": 3277,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "588:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3283,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "588:64:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3284,
                      "nodeType": "ExpressionStatement",
                      "src": "588:64:8"
                    },
                    {
                      "id": 3285,
                      "nodeType": "PlaceholderStatement",
                      "src": "662:1:8"
                    }
                  ]
                },
                "documentation": null,
                "id": 3287,
                "name": "ensure",
                "nodeType": "ModifierDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3276,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3275,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3287,
                      "src": "563:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3274,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "563:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "562:15:8"
                },
                "src": "547:123:8",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 3302,
                  "nodeType": "Block",
                  "src": "728:57:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3296,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 3294,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3270,
                          "src": "738:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 3295,
                          "name": "_factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3289,
                          "src": "748:8:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "738:18:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3297,
                      "nodeType": "ExpressionStatement",
                      "src": "738:18:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3300,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 3298,
                          "name": "WETH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3273,
                          "src": "766:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 3299,
                          "name": "_WETH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3291,
                          "src": "773:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "766:12:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3301,
                      "nodeType": "ExpressionStatement",
                      "src": "766:12:8"
                    }
                  ]
                },
                "documentation": null,
                "id": 3303,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3292,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3289,
                      "mutability": "mutable",
                      "name": "_factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3303,
                      "src": "688:16:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3288,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "688:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3291,
                      "mutability": "mutable",
                      "name": "_WETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3303,
                      "src": "706:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3290,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "706:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "687:33:8"
                },
                "returnParameters": {
                  "id": 3293,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "728:0:8"
                },
                "scope": 5291,
                "src": "676:109:8",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 3313,
                  "nodeType": "Block",
                  "src": "818:98:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 3310,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3307,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "835:3:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3308,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "835:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3309,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3273,
                              "src": "849:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "835:18:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 3306,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "828:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 3311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "828:26:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3312,
                      "nodeType": "ExpressionStatement",
                      "src": "828:26:8"
                    }
                  ]
                },
                "documentation": null,
                "id": 3314,
                "implemented": true,
                "kind": "receive",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3304,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "798:2:8"
                },
                "returnParameters": {
                  "id": 3305,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "818:0:8"
                },
                "scope": 5291,
                "src": "791:125:8",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 3444,
                  "nodeType": "Block",
                  "src": "1192:1124:8",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3337,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3316,
                              "src": "1292:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3338,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3318,
                              "src": "1300:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3334,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3270,
                                  "src": "1275:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3333,
                                "name": "IMarXDEXV2Factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1553,
                                "src": "1257:17:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Factory_$1553_$",
                                  "typeString": "type(contract IMarXDEXV2Factory)"
                                }
                              },
                              "id": 3335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1257:26:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Factory_$1553",
                                "typeString": "contract IMarXDEXV2Factory"
                              }
                            },
                            "id": 3336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPair",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1521,
                            "src": "1257:34:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$",
                              "typeString": "function (address,address) view external returns (address)"
                            }
                          },
                          "id": 3339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1257:50:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1319:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 3341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1311:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 3340,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1311:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 3343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1311:10:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "1257:64:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3354,
                      "nodeType": "IfStatement",
                      "src": "1253:148:8",
                      "trueBody": {
                        "id": 3353,
                        "nodeType": "Block",
                        "src": "1323:78:8",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3349,
                                  "name": "tokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3316,
                                  "src": "1375:6:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3350,
                                  "name": "tokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3318,
                                  "src": "1383:6:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 3346,
                                      "name": "factory",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3270,
                                      "src": "1355:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 3345,
                                    "name": "IMarXDEXV2Factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1553,
                                    "src": "1337:17:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Factory_$1553_$",
                                      "typeString": "type(contract IMarXDEXV2Factory)"
                                    }
                                  },
                                  "id": 3347,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1337:26:8",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMarXDEXV2Factory_$1553",
                                    "typeString": "contract IMarXDEXV2Factory"
                                  }
                                },
                                "id": 3348,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "createPair",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1542,
                                "src": "1337:37:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address,address) external returns (address)"
                                }
                              },
                              "id": 3351,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1337:53:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3352,
                            "nodeType": "ExpressionStatement",
                            "src": "1337:53:8"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        3356,
                        3358
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3356,
                          "mutability": "mutable",
                          "name": "reserveA",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3444,
                          "src": "1411:13:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 3355,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1411:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 3358,
                          "mutability": "mutable",
                          "name": "reserveB",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3444,
                          "src": "1426:13:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 3357,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1426:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3365,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3361,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3270,
                            "src": "1472:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3362,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3316,
                            "src": "1481:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3363,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3318,
                            "src": "1489:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3359,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "1443:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 3360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getReserves",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6846,
                          "src": "1443:28:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,address,address) view returns (uint256,uint256)"
                          }
                        },
                        "id": 3364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1443:53:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1410:86:8"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3366,
                            "name": "reserveA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3356,
                            "src": "1510:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3367,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1522:1:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1510:13:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3371,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 3369,
                            "name": "reserveB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3358,
                            "src": "1527:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3370,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1539:1:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1527:13:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1510:30:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 3442,
                        "nodeType": "Block",
                        "src": "1626:684:8",
                        "statements": [
                          {
                            "assignments": [
                              3383
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3383,
                                "mutability": "mutable",
                                "name": "amountBOptimal",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 3442,
                                "src": "1640:19:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3382,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1640:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 3390,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3386,
                                  "name": "amountADesired",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3320,
                                  "src": "1685:14:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3387,
                                  "name": "reserveA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3356,
                                  "src": "1701:8:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3388,
                                  "name": "reserveB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3358,
                                  "src": "1711:8:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3384,
                                  "name": "MarXDEXV2Library",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7172,
                                  "src": "1662:16:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                    "typeString": "type(library MarXDEXV2Library)"
                                  }
                                },
                                "id": 3385,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "quote",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6885,
                                "src": "1662:22:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 3389,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1662:58:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1640:80:8"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 3391,
                                "name": "amountBOptimal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3383,
                                "src": "1738:14:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3392,
                                "name": "amountBDesired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3322,
                                "src": "1756:14:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1738:32:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 3440,
                              "nodeType": "Block",
                              "src": "1961:339:8",
                              "statements": [
                                {
                                  "assignments": [
                                    3411
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3411,
                                      "mutability": "mutable",
                                      "name": "amountAOptimal",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 3440,
                                      "src": "1979:19:8",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 3410,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1979:4:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3418,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 3414,
                                        "name": "amountBDesired",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3322,
                                        "src": "2024:14:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3415,
                                        "name": "reserveB",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3358,
                                        "src": "2040:8:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 3416,
                                        "name": "reserveA",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3356,
                                        "src": "2050:8:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 3412,
                                        "name": "MarXDEXV2Library",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7172,
                                        "src": "2001:16:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                          "typeString": "type(library MarXDEXV2Library)"
                                        }
                                      },
                                      "id": 3413,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "quote",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6885,
                                      "src": "2001:22:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 3417,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2001:58:8",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "1979:80:8"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3422,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 3420,
                                          "name": "amountAOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3411,
                                          "src": "2084:14:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 3421,
                                          "name": "amountADesired",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3320,
                                          "src": "2102:14:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "2084:32:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 3419,
                                      "name": "assert",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -3,
                                      "src": "2077:6:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                                        "typeString": "function (bool) pure"
                                      }
                                    },
                                    "id": 3423,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2077:40:8",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3424,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2077:40:8"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3428,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 3426,
                                          "name": "amountAOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3411,
                                          "src": "2143:14:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 3427,
                                          "name": "amountAMin",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3324,
                                          "src": "2161:10:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "2143:28:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f415f414d4f554e54",
                                        "id": 3429,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2173:40:8",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_e5cf3244154b31e1a2fcd039426640b0c43afcb263c1b124718f4a31016dba6b",
                                          "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_A_AMOUNT\""
                                        },
                                        "value": "MarXDEXV2Router: INSUFFICIENT_A_AMOUNT"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_e5cf3244154b31e1a2fcd039426640b0c43afcb263c1b124718f4a31016dba6b",
                                          "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_A_AMOUNT\""
                                        }
                                      ],
                                      "id": 3425,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "2135:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 3430,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2135:79:8",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3431,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2135:79:8"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3438,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3432,
                                          "name": "amountA",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3329,
                                          "src": "2233:7:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3433,
                                          "name": "amountB",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3331,
                                          "src": "2242:7:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 3434,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "2232:18:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3435,
                                          "name": "amountAOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3411,
                                          "src": "2254:14:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3436,
                                          "name": "amountBDesired",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3322,
                                          "src": "2270:14:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 3437,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "2253:32:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "src": "2232:53:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3439,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2232:53:8"
                                }
                              ]
                            },
                            "id": 3441,
                            "nodeType": "IfStatement",
                            "src": "1734:566:8",
                            "trueBody": {
                              "id": 3409,
                              "nodeType": "Block",
                              "src": "1772:183:8",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3397,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 3395,
                                          "name": "amountBOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3383,
                                          "src": "1798:14:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 3396,
                                          "name": "amountBMin",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3326,
                                          "src": "1816:10:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "1798:28:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f425f414d4f554e54",
                                        "id": 3398,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1828:40:8",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_e2b94d3b43b922da189e4e9f0aab938b125624f4a303ce567f022d7edf147f38",
                                          "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_B_AMOUNT\""
                                        },
                                        "value": "MarXDEXV2Router: INSUFFICIENT_B_AMOUNT"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_e2b94d3b43b922da189e4e9f0aab938b125624f4a303ce567f022d7edf147f38",
                                          "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_B_AMOUNT\""
                                        }
                                      ],
                                      "id": 3394,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "1790:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 3399,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1790:79:8",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3400,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1790:79:8"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3407,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3401,
                                          "name": "amountA",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3329,
                                          "src": "1888:7:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3402,
                                          "name": "amountB",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3331,
                                          "src": "1897:7:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 3403,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "1887:18:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3404,
                                          "name": "amountADesired",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3320,
                                          "src": "1909:14:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3405,
                                          "name": "amountBOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3383,
                                          "src": "1925:14:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 3406,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "1908:32:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "src": "1887:53:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3408,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1887:53:8"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "id": 3443,
                      "nodeType": "IfStatement",
                      "src": "1506:804:8",
                      "trueBody": {
                        "id": 3381,
                        "nodeType": "Block",
                        "src": "1542:78:8",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 3379,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3373,
                                    "name": "amountA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3329,
                                    "src": "1557:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3374,
                                    "name": "amountB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3331,
                                    "src": "1566:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3375,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "TupleExpression",
                                "src": "1556:18:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3376,
                                    "name": "amountADesired",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3320,
                                    "src": "1578:14:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3377,
                                    "name": "amountBDesired",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3322,
                                    "src": "1594:14:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3378,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1577:32:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "src": "1556:53:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 3380,
                            "nodeType": "ExpressionStatement",
                            "src": "1556:53:8"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 3445,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_addLiquidity",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3327,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3316,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3445,
                      "src": "985:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3315,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "985:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3318,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3445,
                      "src": "1009:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3317,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1009:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3320,
                      "mutability": "mutable",
                      "name": "amountADesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3445,
                      "src": "1033:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3319,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1033:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3322,
                      "mutability": "mutable",
                      "name": "amountBDesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3445,
                      "src": "1062:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3321,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1062:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3324,
                      "mutability": "mutable",
                      "name": "amountAMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3445,
                      "src": "1091:15:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3323,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1091:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3326,
                      "mutability": "mutable",
                      "name": "amountBMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3445,
                      "src": "1116:15:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3325,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1116:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "975:162:8"
                },
                "returnParameters": {
                  "id": 3332,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3329,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3445,
                      "src": "1164:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3328,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1164:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3331,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3445,
                      "src": "1178:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3330,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1178:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1163:28:8"
                },
                "scope": 5291,
                "src": "953:1363:8",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "internal"
              },
              {
                "baseFunctions": [
                  6321
                ],
                "body": {
                  "id": 3525,
                  "nodeType": "Block",
                  "src": "2644:400:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3485,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3474,
                              "name": "amountA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3468,
                              "src": "2655:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3475,
                              "name": "amountB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3470,
                              "src": "2664:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3476,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "2654:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3478,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3447,
                              "src": "2689:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3479,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3449,
                              "src": "2697:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3480,
                              "name": "amountADesired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3451,
                              "src": "2705:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3481,
                              "name": "amountBDesired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3453,
                              "src": "2721:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3482,
                              "name": "amountAMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3455,
                              "src": "2737:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3483,
                              "name": "amountBMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3457,
                              "src": "2749:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3477,
                            "name": "_addLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3445,
                            "src": "2675:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,uint256,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 3484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2675:85:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "2654:106:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3486,
                      "nodeType": "ExpressionStatement",
                      "src": "2654:106:8"
                    },
                    {
                      "assignments": [
                        3488
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3488,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3525,
                          "src": "2770:12:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3487,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2770:7:8",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3495,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3491,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3270,
                            "src": "2810:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3492,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3447,
                            "src": "2819:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3493,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3449,
                            "src": "2827:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3489,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "2785:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 3490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6796,
                          "src": "2785:24:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 3494,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2785:49:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2770:64:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3499,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3447,
                            "src": "2876:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3500,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2884:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2884:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3502,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3488,
                            "src": "2896:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3503,
                            "name": "amountA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3468,
                            "src": "2902:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3496,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "2844:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "2844:31:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 3504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2844:66:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3505,
                      "nodeType": "ExpressionStatement",
                      "src": "2844:66:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3509,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3449,
                            "src": "2952:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3510,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2960:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2960:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3512,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3488,
                            "src": "2972:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3513,
                            "name": "amountB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3470,
                            "src": "2978:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3506,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "2920:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3508,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "2920:31:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 3514,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2920:66:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3515,
                      "nodeType": "ExpressionStatement",
                      "src": "2920:66:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 3516,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3472,
                          "src": "2996:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3521,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3459,
                              "src": "3034:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3518,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3488,
                                  "src": "3023:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3517,
                                "name": "IMarXDEXV2Pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1795,
                                "src": "3008:14:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                  "typeString": "type(contract IMarXDEXV2Pair)"
                                }
                              },
                              "id": 3519,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3008:20:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                "typeString": "contract IMarXDEXV2Pair"
                              }
                            },
                            "id": 3520,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1759,
                            "src": "3008:25:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) external returns (uint256)"
                            }
                          },
                          "id": 3522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3008:29:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2996:41:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3524,
                      "nodeType": "ExpressionStatement",
                      "src": "2996:41:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "e8e33700",
                "id": 3526,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3465,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3461,
                        "src": "2581:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3466,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 3464,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3287,
                      "src": "2574:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "2574:16:8"
                  }
                ],
                "name": "addLiquidity",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3463,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "2565:8:8"
                },
                "parameters": {
                  "id": 3462,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3447,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3526,
                      "src": "2352:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3446,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2352:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3449,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3526,
                      "src": "2376:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3448,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2376:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3451,
                      "mutability": "mutable",
                      "name": "amountADesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3526,
                      "src": "2400:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3450,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2400:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3453,
                      "mutability": "mutable",
                      "name": "amountBDesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3526,
                      "src": "2429:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3452,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2429:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3455,
                      "mutability": "mutable",
                      "name": "amountAMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3526,
                      "src": "2458:15:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3454,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2458:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3457,
                      "mutability": "mutable",
                      "name": "amountBMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3526,
                      "src": "2483:15:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3456,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2483:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3459,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3526,
                      "src": "2508:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3458,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2508:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3461,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3526,
                      "src": "2528:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3460,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2528:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2342:205:8"
                },
                "returnParameters": {
                  "id": 3473,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3468,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3526,
                      "src": "2600:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3467,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2600:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3470,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3526,
                      "src": "2614:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3469,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2614:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3472,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3526,
                      "src": "2628:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3471,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2628:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2599:44:8"
                },
                "scope": 5291,
                "src": "2321:723:8",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6342
                ],
                "body": {
                  "id": 3627,
                  "nodeType": "Block",
                  "src": "3345:655:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3563,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3551,
                              "name": "amountToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3545,
                              "src": "3356:11:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3552,
                              "name": "amountETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3547,
                              "src": "3369:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3553,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "3355:24:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3555,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3528,
                              "src": "3409:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3556,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3273,
                              "src": "3428:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3557,
                              "name": "amountTokenDesired",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3530,
                              "src": "3446:18:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3558,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3478:3:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3478:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3560,
                              "name": "amountTokenMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3532,
                              "src": "3501:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3561,
                              "name": "amountETHMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3534,
                              "src": "3529:12:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3554,
                            "name": "_addLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3445,
                            "src": "3382:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,uint256,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 3562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3382:169:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "3355:196:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3564,
                      "nodeType": "ExpressionStatement",
                      "src": "3355:196:8"
                    },
                    {
                      "assignments": [
                        3566
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3566,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3627,
                          "src": "3561:12:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3565,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3561:7:8",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3573,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3569,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3270,
                            "src": "3601:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3570,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3528,
                            "src": "3610:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3571,
                            "name": "WETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3273,
                            "src": "3617:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3567,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "3576:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 3568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6796,
                          "src": "3576:24:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 3572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3576:46:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3561:61:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3577,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3528,
                            "src": "3664:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3578,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "3671:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3579,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3671:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3580,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3566,
                            "src": "3683:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3581,
                            "name": "amountToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3545,
                            "src": "3689:11:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3574,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "3632:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "3632:31:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 3582,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3632:69:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3583,
                      "nodeType": "ExpressionStatement",
                      "src": "3632:69:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3585,
                                  "name": "WETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3273,
                                  "src": "3717:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3584,
                                "name": "IWETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6700,
                                "src": "3711:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                  "typeString": "type(contract IWETH)"
                                }
                              },
                              "id": 3586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3711:11:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$6700",
                                "typeString": "contract IWETH"
                              }
                            },
                            "id": 3587,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6685,
                            "src": "3711:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 3589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "argumentTypes": null,
                              "id": 3588,
                              "name": "amountETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3547,
                              "src": "3738:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "3711:37:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                            "typeString": "function () payable external"
                          }
                        },
                        "id": 3590,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3711:39:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3591,
                      "nodeType": "ExpressionStatement",
                      "src": "3711:39:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3597,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3566,
                                "src": "3788:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3598,
                                "name": "amountETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3547,
                                "src": "3794:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3594,
                                    "name": "WETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3273,
                                    "src": "3773:4:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3593,
                                  "name": "IWETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6700,
                                  "src": "3767:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                    "typeString": "type(contract IWETH)"
                                  }
                                },
                                "id": 3595,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3767:11:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWETH_$6700",
                                  "typeString": "contract IWETH"
                                }
                              },
                              "id": 3596,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6694,
                              "src": "3767:20:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 3599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3767:37:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 3592,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "3760:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 3600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3760:45:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3601,
                      "nodeType": "ExpressionStatement",
                      "src": "3760:45:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3609,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 3602,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3549,
                          "src": "3815:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3607,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3536,
                              "src": "3853:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3604,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3566,
                                  "src": "3842:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3603,
                                "name": "IMarXDEXV2Pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1795,
                                "src": "3827:14:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                  "typeString": "type(contract IMarXDEXV2Pair)"
                                }
                              },
                              "id": 3605,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3827:20:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                "typeString": "contract IMarXDEXV2Pair"
                              }
                            },
                            "id": 3606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1759,
                            "src": "3827:25:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) external returns (uint256)"
                            }
                          },
                          "id": 3608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3827:29:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3815:41:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3610,
                      "nodeType": "ExpressionStatement",
                      "src": "3815:41:8"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3614,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3611,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "3905:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3905:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3613,
                          "name": "amountETH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3547,
                          "src": "3917:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3905:21:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3626,
                      "nodeType": "IfStatement",
                      "src": "3901:92:8",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3618,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3959:3:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3619,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3959:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3620,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3971:3:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3971:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 3622,
                                "name": "amountETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3547,
                                "src": "3983:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3971:21:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3615,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1490,
                              "src": "3928:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 3617,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferETH",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1489,
                            "src": "3928:30:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 3624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3928:65:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3625,
                        "nodeType": "ExpressionStatement",
                        "src": "3928:65:8"
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "f305d719",
                "id": 3628,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3542,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3538,
                        "src": "3276:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3543,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 3541,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3287,
                      "src": "3269:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3269:16:8"
                  }
                ],
                "name": "addLiquidityETH",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3540,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3252:8:8"
                },
                "parameters": {
                  "id": 3539,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3528,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3628,
                      "src": "3083:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3527,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3083:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3530,
                      "mutability": "mutable",
                      "name": "amountTokenDesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3628,
                      "src": "3106:23:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3529,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3106:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3532,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3628,
                      "src": "3139:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3531,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3139:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3534,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3628,
                      "src": "3168:17:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3533,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3168:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3536,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3628,
                      "src": "3195:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3535,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3195:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3538,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3628,
                      "src": "3215:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3537,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3215:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3073:161:8"
                },
                "returnParameters": {
                  "id": 3550,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3545,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3628,
                      "src": "3295:16:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3544,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3295:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3547,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3628,
                      "src": "3313:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3546,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3313:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3549,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3628,
                      "src": "3329:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3548,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3329:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3294:50:8"
                },
                "scope": 5291,
                "src": "3049:951:8",
                "stateMutability": "payable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6363
                ],
                "body": {
                  "id": 3720,
                  "nodeType": "Block",
                  "src": "4314:575:8",
                  "statements": [
                    {
                      "assignments": [
                        3654
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3654,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3720,
                          "src": "4324:12:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3653,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4324:7:8",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3661,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3657,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3270,
                            "src": "4364:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3658,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3630,
                            "src": "4373:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3659,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3632,
                            "src": "4381:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3655,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "4339:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 3656,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6796,
                          "src": "4339:24:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 3660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4339:49:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4324:64:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3666,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "4432:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4432:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3668,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3654,
                            "src": "4444:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3669,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3634,
                            "src": "4450:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3663,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3654,
                                "src": "4413:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3662,
                              "name": "IMarXDEXV2Pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1795,
                              "src": "4398:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                "typeString": "type(contract IMarXDEXV2Pair)"
                              }
                            },
                            "id": 3664,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4398:20:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                              "typeString": "contract IMarXDEXV2Pair"
                            }
                          },
                          "id": 3665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1636,
                          "src": "4398:33:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 3670,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4398:62:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 3671,
                      "nodeType": "ExpressionStatement",
                      "src": "4398:62:8"
                    },
                    {
                      "assignments": [
                        3673,
                        3675
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3673,
                          "mutability": "mutable",
                          "name": "amount0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3720,
                          "src": "4497:12:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 3672,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4497:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 3675,
                          "mutability": "mutable",
                          "name": "amount1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3720,
                          "src": "4511:12:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 3674,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4511:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3682,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3680,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3640,
                            "src": "4553:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3677,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3654,
                                "src": "4542:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3676,
                              "name": "IMarXDEXV2Pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1795,
                              "src": "4527:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                "typeString": "type(contract IMarXDEXV2Pair)"
                              }
                            },
                            "id": 3678,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4527:20:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                              "typeString": "contract IMarXDEXV2Pair"
                            }
                          },
                          "id": 3679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "burn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1768,
                          "src": "4527:25:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address) external returns (uint256,uint256)"
                          }
                        },
                        "id": 3681,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4527:29:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4496:60:8"
                    },
                    {
                      "assignments": [
                        3684,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3684,
                          "mutability": "mutable",
                          "name": "token0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3720,
                          "src": "4567:14:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3683,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4567:7:8",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 3690,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3687,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3630,
                            "src": "4614:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3688,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3632,
                            "src": "4622:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3685,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "4586:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 3686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sortTokens",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6751,
                          "src": "4586:27:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                            "typeString": "function (address,address) pure returns (address,address)"
                          }
                        },
                        "id": 3689,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4586:43:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                          "typeString": "tuple(address,address)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4566:63:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3704,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3691,
                              "name": "amountA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3649,
                              "src": "4640:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3692,
                              "name": "amountB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3651,
                              "src": "4649:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3693,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "4639:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 3696,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3694,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3630,
                              "src": "4660:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3695,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3684,
                              "src": "4670:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4660:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 3700,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3675,
                                "src": "4701:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3701,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3673,
                                "src": "4710:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 3702,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4700:18:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "id": 3703,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "4660:58:8",
                          "trueExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 3697,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3673,
                                "src": "4680:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3698,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3675,
                                "src": "4689:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 3699,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4679:18:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "4639:79:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3705,
                      "nodeType": "ExpressionStatement",
                      "src": "4639:79:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3709,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3707,
                              "name": "amountA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3649,
                              "src": "4736:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3708,
                              "name": "amountAMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3636,
                              "src": "4747:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4736:21:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f415f414d4f554e54",
                            "id": 3710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4759:40:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e5cf3244154b31e1a2fcd039426640b0c43afcb263c1b124718f4a31016dba6b",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_A_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: INSUFFICIENT_A_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e5cf3244154b31e1a2fcd039426640b0c43afcb263c1b124718f4a31016dba6b",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_A_AMOUNT\""
                            }
                          ],
                          "id": 3706,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4728:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3711,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4728:72:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3712,
                      "nodeType": "ExpressionStatement",
                      "src": "4728:72:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3716,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 3714,
                              "name": "amountB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3651,
                              "src": "4818:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3715,
                              "name": "amountBMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3638,
                              "src": "4829:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4818:21:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f425f414d4f554e54",
                            "id": 3717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4841:40:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e2b94d3b43b922da189e4e9f0aab938b125624f4a303ce567f022d7edf147f38",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_B_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: INSUFFICIENT_B_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e2b94d3b43b922da189e4e9f0aab938b125624f4a303ce567f022d7edf147f38",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_B_AMOUNT\""
                            }
                          ],
                          "id": 3713,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4810:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3718,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4810:72:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3719,
                      "nodeType": "ExpressionStatement",
                      "src": "4810:72:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "baa2abde",
                "id": 3721,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3646,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3642,
                        "src": "4267:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3647,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 3645,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3287,
                      "src": "4260:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "4260:16:8"
                  }
                ],
                "name": "removeLiquidity",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3644,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "4251:8:8"
                },
                "parameters": {
                  "id": 3643,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3630,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3721,
                      "src": "4074:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3629,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4074:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3632,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3721,
                      "src": "4098:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3631,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4098:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3634,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3721,
                      "src": "4122:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3633,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4122:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3636,
                      "mutability": "mutable",
                      "name": "amountAMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3721,
                      "src": "4146:15:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3635,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4146:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3638,
                      "mutability": "mutable",
                      "name": "amountBMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3721,
                      "src": "4171:15:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3637,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4171:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3640,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3721,
                      "src": "4196:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3639,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4196:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3642,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3721,
                      "src": "4216:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3641,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4216:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4064:171:8"
                },
                "returnParameters": {
                  "id": 3652,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3649,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3721,
                      "src": "4286:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3648,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4286:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3651,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3721,
                      "src": "4300:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3650,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4300:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4285:28:8"
                },
                "scope": 5291,
                "src": "4040:849:8",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6382
                ],
                "body": {
                  "id": 3783,
                  "nodeType": "Block",
                  "src": "5158:389:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3759,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3744,
                              "name": "amountToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3740,
                              "src": "5169:11:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3745,
                              "name": "amountETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3742,
                              "src": "5182:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3746,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "5168:24:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3748,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3723,
                              "src": "5224:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3749,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3273,
                              "src": "5243:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3750,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3725,
                              "src": "5261:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3751,
                              "name": "amountTokenMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3727,
                              "src": "5284:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3752,
                              "name": "amountETHMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3729,
                              "src": "5312:12:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3755,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "5346:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                    "typeString": "contract MarXDEXV2Router02"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                    "typeString": "contract MarXDEXV2Router02"
                                  }
                                ],
                                "id": 3754,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5338:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3753,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5338:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3756,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5338:13:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3757,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3733,
                              "src": "5365:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3747,
                            "name": "removeLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3721,
                            "src": "5195:15:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 3758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5195:188:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "5168:215:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3760,
                      "nodeType": "ExpressionStatement",
                      "src": "5168:215:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3764,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3723,
                            "src": "5421:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3765,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3731,
                            "src": "5428:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3766,
                            "name": "amountToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3740,
                            "src": "5432:11:8",
                            "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": 3761,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "5393:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1418,
                          "src": "5393:27:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 3767,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5393:51:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3768,
                      "nodeType": "ExpressionStatement",
                      "src": "5393:51:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3773,
                            "name": "amountETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3742,
                            "src": "5475:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3770,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3273,
                                "src": "5460:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3769,
                              "name": "IWETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6700,
                              "src": "5454:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                "typeString": "type(contract IWETH)"
                              }
                            },
                            "id": 3771,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5454:11:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$6700",
                              "typeString": "contract IWETH"
                            }
                          },
                          "id": 3772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6699,
                          "src": "5454:20:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256) external"
                          }
                        },
                        "id": 3774,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5454:31:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3775,
                      "nodeType": "ExpressionStatement",
                      "src": "5454:31:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3779,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3731,
                            "src": "5526:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3780,
                            "name": "amountETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3742,
                            "src": "5530:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3776,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "5495:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1489,
                          "src": "5495:30:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 3781,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5495:45:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3782,
                      "nodeType": "ExpressionStatement",
                      "src": "5495:45:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "02751cec",
                "id": 3784,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3737,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3733,
                        "src": "5105:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3738,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 3736,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3287,
                      "src": "5098:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "5098:16:8"
                  }
                ],
                "name": "removeLiquidityETH",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3735,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "5089:8:8"
                },
                "parameters": {
                  "id": 3734,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3723,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3784,
                      "src": "4931:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3722,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4931:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3725,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3784,
                      "src": "4954:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3724,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4954:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3727,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3784,
                      "src": "4978:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3726,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4978:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3729,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3784,
                      "src": "5007:17:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3728,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5007:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3731,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3784,
                      "src": "5034:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3730,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5034:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3733,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3784,
                      "src": "5054:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3732,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5054:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4921:152:8"
                },
                "returnParameters": {
                  "id": 3743,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3740,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3784,
                      "src": "5124:16:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3739,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5124:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3742,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3784,
                      "src": "5142:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3741,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5142:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5123:34:8"
                },
                "scope": 5291,
                "src": "4894:653:8",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6411
                ],
                "body": {
                  "id": 3865,
                  "nodeType": "Block",
                  "src": "5877:338:8",
                  "statements": [
                    {
                      "assignments": [
                        3815
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3815,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3865,
                          "src": "5887:12:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3814,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5887:7:8",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3822,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3818,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3270,
                            "src": "5927:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3819,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3786,
                            "src": "5936:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3820,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3788,
                            "src": "5944:6:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3816,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "5902:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 3817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6796,
                          "src": "5902:24:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 3821,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5902:49:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5887:64:8"
                    },
                    {
                      "assignments": [
                        3824
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3824,
                          "mutability": "mutable",
                          "name": "value",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3865,
                          "src": "5961:10:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 3823,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5961:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3833,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "id": 3825,
                          "name": "approveMax",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3800,
                          "src": "5974:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "id": 3831,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3790,
                          "src": "5998:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3832,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "5974:33:8",
                        "trueExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3829,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "5992:2:8",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 3828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5993:1:8",
                                "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": 3827,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5987:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 3826,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "5987:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 3830,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5987:8:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5961:46:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3838,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "6045:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3839,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6045:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3842,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "6065:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                  "typeString": "contract MarXDEXV2Router02"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                  "typeString": "contract MarXDEXV2Router02"
                                }
                              ],
                              "id": 3841,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6057:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3840,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6057:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3843,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6057:13:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3844,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3824,
                            "src": "6072:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3845,
                            "name": "deadline",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3798,
                            "src": "6079:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3846,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3802,
                            "src": "6089:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3847,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3804,
                            "src": "6092:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3848,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3806,
                            "src": "6095:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3835,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3815,
                                "src": "6032:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3834,
                              "name": "IMarXDEXV2Pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1795,
                              "src": "6017:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                "typeString": "type(contract IMarXDEXV2Pair)"
                              }
                            },
                            "id": 3836,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6017:20:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                              "typeString": "contract IMarXDEXV2Pair"
                            }
                          },
                          "id": 3837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "permit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1670,
                          "src": "6017:27:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                            "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                          }
                        },
                        "id": 3849,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6017:80:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3850,
                      "nodeType": "ExpressionStatement",
                      "src": "6017:80:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3863,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3851,
                              "name": "amountA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3810,
                              "src": "6108:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3852,
                              "name": "amountB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3812,
                              "src": "6117:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3853,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "6107:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3855,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3786,
                              "src": "6144:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3856,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3788,
                              "src": "6152:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3857,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3790,
                              "src": "6160:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3858,
                              "name": "amountAMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3792,
                              "src": "6171:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3859,
                              "name": "amountBMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3794,
                              "src": "6183:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3860,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3796,
                              "src": "6195:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3861,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3798,
                              "src": "6199:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3854,
                            "name": "removeLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3721,
                            "src": "6128:15:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 3862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6128:80:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "6107:101:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3864,
                      "nodeType": "ExpressionStatement",
                      "src": "6107:101:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "2195995c",
                "id": 3866,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityWithPermit",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3808,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "5831:8:8"
                },
                "parameters": {
                  "id": 3807,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3786,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3866,
                      "src": "5596:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3785,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5596:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3788,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3866,
                      "src": "5620:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3787,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5620:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3790,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3866,
                      "src": "5644:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3789,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5644:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3792,
                      "mutability": "mutable",
                      "name": "amountAMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3866,
                      "src": "5668:15:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3791,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5668:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3794,
                      "mutability": "mutable",
                      "name": "amountBMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3866,
                      "src": "5693:15:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3793,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5693:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3796,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3866,
                      "src": "5718:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3795,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5718:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3798,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3866,
                      "src": "5738:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3797,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5738:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3800,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3866,
                      "src": "5761:15:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3799,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5761:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3802,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3866,
                      "src": "5778:7:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3801,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "5778:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3804,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3866,
                      "src": "5787:9:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3803,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5787:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3806,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3866,
                      "src": "5798:9:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3805,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5798:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5586:227:8"
                },
                "returnParameters": {
                  "id": 3813,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3810,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3866,
                      "src": "5849:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3809,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5849:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3812,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3866,
                      "src": "5863:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3811,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5863:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5848:28:8"
                },
                "scope": 5291,
                "src": "5552:663:8",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6438
                ],
                "body": {
                  "id": 3944,
                  "nodeType": "Block",
                  "src": "6535:341:8",
                  "statements": [
                    {
                      "assignments": [
                        3895
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3895,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3944,
                          "src": "6545:12:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3894,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6545:7:8",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3902,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3898,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3270,
                            "src": "6585:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3899,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3868,
                            "src": "6594:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3900,
                            "name": "WETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3273,
                            "src": "6601:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3896,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "6560:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 3897,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6796,
                          "src": "6560:24:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 3901,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6560:46:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6545:61:8"
                    },
                    {
                      "assignments": [
                        3904
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3904,
                          "mutability": "mutable",
                          "name": "value",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3944,
                          "src": "6616:10:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 3903,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6616:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3913,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "id": 3905,
                          "name": "approveMax",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3880,
                          "src": "6629:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "id": 3911,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3870,
                          "src": "6653:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3912,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "6629:33:8",
                        "trueExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3909,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "6647:2:8",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 3908,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6648:1:8",
                                "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": 3907,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6642:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 3906,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "6642:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 3910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6642:8:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6616:46:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3918,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "6700:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3919,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6700:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3922,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "6720:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                  "typeString": "contract MarXDEXV2Router02"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                  "typeString": "contract MarXDEXV2Router02"
                                }
                              ],
                              "id": 3921,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6712:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3920,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6712:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3923,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6712:13:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3924,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3904,
                            "src": "6727:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3925,
                            "name": "deadline",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3878,
                            "src": "6734:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3926,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3882,
                            "src": "6744:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3927,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3884,
                            "src": "6747:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3928,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3886,
                            "src": "6750:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3915,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3895,
                                "src": "6687:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3914,
                              "name": "IMarXDEXV2Pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1795,
                              "src": "6672:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                "typeString": "type(contract IMarXDEXV2Pair)"
                              }
                            },
                            "id": 3916,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6672:20:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                              "typeString": "contract IMarXDEXV2Pair"
                            }
                          },
                          "id": 3917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "permit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1670,
                          "src": "6672:27:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                            "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                          }
                        },
                        "id": 3929,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6672:80:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3930,
                      "nodeType": "ExpressionStatement",
                      "src": "6672:80:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3942,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3931,
                              "name": "amountToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3890,
                              "src": "6763:11:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3932,
                              "name": "amountETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3892,
                              "src": "6776:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3933,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "6762:24:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3935,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3868,
                              "src": "6808:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3936,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3870,
                              "src": "6815:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3937,
                              "name": "amountTokenMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3872,
                              "src": "6826:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3938,
                              "name": "amountETHMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3874,
                              "src": "6842:12:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3939,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3876,
                              "src": "6856:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3940,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3878,
                              "src": "6860:8:8",
                              "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"
                              }
                            ],
                            "id": 3934,
                            "name": "removeLiquidityETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3784,
                            "src": "6789:18:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 3941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6789:80:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "6762:107:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3943,
                      "nodeType": "ExpressionStatement",
                      "src": "6762:107:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "ded9382a",
                "id": 3945,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETHWithPermit",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3888,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "6483:8:8"
                },
                "parameters": {
                  "id": 3887,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3868,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3945,
                      "src": "6267:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3867,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6267:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3870,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3945,
                      "src": "6290:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3869,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6290:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3872,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3945,
                      "src": "6314:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3871,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6314:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3874,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3945,
                      "src": "6343:17:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3873,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6343:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3876,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3945,
                      "src": "6370:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3875,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6370:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3878,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3945,
                      "src": "6390:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3877,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6390:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3880,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3945,
                      "src": "6413:15:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3879,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "6413:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3882,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3945,
                      "src": "6430:7:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3881,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "6430:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3884,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3945,
                      "src": "6439:9:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3883,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6439:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3886,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3945,
                      "src": "6450:9:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3885,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6450:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6257:208:8"
                },
                "returnParameters": {
                  "id": 3893,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3890,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3945,
                      "src": "6501:16:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3889,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6501:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3892,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3945,
                      "src": "6519:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3891,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6519:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6500:34:8"
                },
                "scope": 5291,
                "src": "6220:656:8",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6614
                ],
                "body": {
                  "id": 4012,
                  "nodeType": "Block",
                  "src": "7227:405:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3980,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            null,
                            {
                              "argumentTypes": null,
                              "id": 3966,
                              "name": "amountETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3964,
                              "src": "7240:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3967,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "7237:13:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$_t_uint256_$",
                            "typeString": "tuple(,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3969,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3947,
                              "src": "7282:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3970,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3273,
                              "src": "7301:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3971,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3949,
                              "src": "7319:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3972,
                              "name": "amountTokenMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3951,
                              "src": "7342:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3973,
                              "name": "amountETHMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3953,
                              "src": "7370:12:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3976,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "7404:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                    "typeString": "contract MarXDEXV2Router02"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                    "typeString": "contract MarXDEXV2Router02"
                                  }
                                ],
                                "id": 3975,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7396:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3974,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7396:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3977,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7396:13:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3978,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3957,
                              "src": "7423:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3968,
                            "name": "removeLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3721,
                            "src": "7253:15:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 3979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7253:188:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "7237:204:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3981,
                      "nodeType": "ExpressionStatement",
                      "src": "7237:204:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3985,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3947,
                            "src": "7479:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3986,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3955,
                            "src": "7486:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3993,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "7522:4:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                      "typeString": "contract MarXDEXV2Router02"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                      "typeString": "contract MarXDEXV2Router02"
                                    }
                                  ],
                                  "id": 3992,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7514:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3991,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7514:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3994,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7514:13:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3988,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3947,
                                    "src": "7497:5:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3987,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6284,
                                  "src": "7490:6:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$6284_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 3989,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7490:13:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$6284",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 3990,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6245,
                              "src": "7490:23:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 3995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7490:38:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3982,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "7451:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1418,
                          "src": "7451:27:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 3996,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7451:78:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3997,
                      "nodeType": "ExpressionStatement",
                      "src": "7451:78:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4002,
                            "name": "amountETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3964,
                            "src": "7560:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3999,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3273,
                                "src": "7545:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3998,
                              "name": "IWETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6700,
                              "src": "7539:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                "typeString": "type(contract IWETH)"
                              }
                            },
                            "id": 4000,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7539:11:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$6700",
                              "typeString": "contract IWETH"
                            }
                          },
                          "id": 4001,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6699,
                          "src": "7539:20:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256) external"
                          }
                        },
                        "id": 4003,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7539:31:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4004,
                      "nodeType": "ExpressionStatement",
                      "src": "7539:31:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4008,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3955,
                            "src": "7611:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4009,
                            "name": "amountETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3964,
                            "src": "7615:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4005,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "7580:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1489,
                          "src": "7580:30:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 4010,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7580:45:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4011,
                      "nodeType": "ExpressionStatement",
                      "src": "7580:45:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "af2979eb",
                "id": 4013,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3961,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3957,
                        "src": "7192:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3962,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 3960,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3287,
                      "src": "7185:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "7185:16:8"
                  }
                ],
                "name": "removeLiquidityETHSupportingFeeOnTransferTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3959,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "7176:8:8"
                },
                "parameters": {
                  "id": 3958,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3947,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4013,
                      "src": "7018:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3946,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7018:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3949,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4013,
                      "src": "7041:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3948,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7041:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3951,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4013,
                      "src": "7065:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3950,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7065:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3953,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4013,
                      "src": "7094:17:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3952,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7094:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3955,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4013,
                      "src": "7121:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3954,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7121:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3957,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4013,
                      "src": "7141:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3956,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7141:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7008:152:8"
                },
                "returnParameters": {
                  "id": 3965,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3964,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4013,
                      "src": "7211:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3963,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7211:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7210:16:8"
                },
                "scope": 5291,
                "src": "6952:680:8",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6639
                ],
                "body": {
                  "id": 4087,
                  "nodeType": "Block",
                  "src": "7963:377:8",
                  "statements": [
                    {
                      "assignments": [
                        4040
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4040,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4087,
                          "src": "7973:12:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 4039,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7973:7:8",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4047,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4043,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3270,
                            "src": "8013:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4044,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4015,
                            "src": "8022:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4045,
                            "name": "WETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3273,
                            "src": "8029:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4041,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "7988:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 4042,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6796,
                          "src": "7988:24:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 4046,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7988:46:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7973:61:8"
                    },
                    {
                      "assignments": [
                        4049
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4049,
                          "mutability": "mutable",
                          "name": "value",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4087,
                          "src": "8044:10:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4048,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "8044:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4058,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "id": 4050,
                          "name": "approveMax",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4027,
                          "src": "8057:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "id": 4056,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4017,
                          "src": "8081:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "8057:33:8",
                        "trueExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "8075:2:8",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4053,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8076:1:8",
                                "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": 4052,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8070:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 4051,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "8070:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 4055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8070:8:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8044:46:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4063,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "8128:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4064,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8128:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4067,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "8148:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                  "typeString": "contract MarXDEXV2Router02"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                  "typeString": "contract MarXDEXV2Router02"
                                }
                              ],
                              "id": 4066,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8140:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4065,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8140:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 4068,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8140:13:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4069,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4049,
                            "src": "8155:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4070,
                            "name": "deadline",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4025,
                            "src": "8162:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4071,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4029,
                            "src": "8172:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4072,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4031,
                            "src": "8175:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4073,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4033,
                            "src": "8178:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4060,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4040,
                                "src": "8115:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4059,
                              "name": "IMarXDEXV2Pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1795,
                              "src": "8100:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                "typeString": "type(contract IMarXDEXV2Pair)"
                              }
                            },
                            "id": 4061,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8100:20:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                              "typeString": "contract IMarXDEXV2Pair"
                            }
                          },
                          "id": 4062,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "permit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1670,
                          "src": "8100:27:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                            "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                          }
                        },
                        "id": 4074,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8100:80:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4075,
                      "nodeType": "ExpressionStatement",
                      "src": "8100:80:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4076,
                          "name": "amountETH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4037,
                          "src": "8190:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4078,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4015,
                              "src": "8263:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4079,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4017,
                              "src": "8270:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4080,
                              "name": "amountTokenMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4019,
                              "src": "8281:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4081,
                              "name": "amountETHMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4021,
                              "src": "8297:12:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4082,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4023,
                              "src": "8311:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4083,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4025,
                              "src": "8315:8:8",
                              "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"
                              }
                            ],
                            "id": 4077,
                            "name": "removeLiquidityETHSupportingFeeOnTransferTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4013,
                            "src": "8202:47:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256,uint256,uint256,address,uint256) returns (uint256)"
                            }
                          },
                          "id": 4084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8202:131:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8190:143:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 4086,
                      "nodeType": "ExpressionStatement",
                      "src": "8190:143:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "5b0d5984",
                "id": 4088,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 4035,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "7929:8:8"
                },
                "parameters": {
                  "id": 4034,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4015,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4088,
                      "src": "7713:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4014,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7713:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4017,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4088,
                      "src": "7736:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4016,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7736:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4019,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4088,
                      "src": "7760:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4018,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7760:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4021,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4088,
                      "src": "7789:17:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4020,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7789:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4023,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4088,
                      "src": "7816:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4022,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7816:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4025,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4088,
                      "src": "7836:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4024,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7836:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4027,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4088,
                      "src": "7859:15:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4026,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "7859:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4029,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4088,
                      "src": "7876:7:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 4028,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "7876:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4031,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4088,
                      "src": "7885:9:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4030,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7885:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4033,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4088,
                      "src": "7896:9:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4032,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7896:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7703:208:8"
                },
                "returnParameters": {
                  "id": 4038,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4037,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4088,
                      "src": "7947:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4036,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7947:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7946:16:8"
                },
                "scope": 5291,
                "src": "7637:703:8",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 4203,
                  "nodeType": "Block",
                  "src": "8538:633:8",
                  "statements": [
                    {
                      "body": {
                        "id": 4201,
                        "nodeType": "Block",
                        "src": "8587:578:8",
                        "statements": [
                          {
                            "assignments": [
                              4112,
                              4114
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4112,
                                "mutability": "mutable",
                                "name": "input",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4201,
                                "src": "8602:13:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 4111,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8602:7:8",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 4114,
                                "mutability": "mutable",
                                "name": "output",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4201,
                                "src": "8617:14:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 4113,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8617:7:8",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 4124,
                            "initialValue": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4115,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4094,
                                    "src": "8636:4:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 4117,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4116,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4100,
                                    "src": "8641:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "8636:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4118,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4094,
                                    "src": "8645:4:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 4122,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4121,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 4119,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4100,
                                      "src": "8650:1:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 4120,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8654:1:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "8650:5:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "8645:11:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "id": 4123,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "8635:22:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                "typeString": "tuple(address,address)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "8601:56:8"
                          },
                          {
                            "assignments": [
                              4126,
                              null
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4126,
                                "mutability": "mutable",
                                "name": "token0",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4201,
                                "src": "8672:14:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 4125,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8672:7:8",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              null
                            ],
                            "id": 4132,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4129,
                                  "name": "input",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4112,
                                  "src": "8719:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4130,
                                  "name": "output",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4114,
                                  "src": "8726:6:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4127,
                                  "name": "MarXDEXV2Library",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7172,
                                  "src": "8691:16:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                    "typeString": "type(library MarXDEXV2Library)"
                                  }
                                },
                                "id": 4128,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sortTokens",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6751,
                                "src": "8691:27:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                                  "typeString": "function (address,address) pure returns (address,address)"
                                }
                              },
                              "id": 4131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8691:42:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                "typeString": "tuple(address,address)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "8671:62:8"
                          },
                          {
                            "assignments": [
                              4134
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4134,
                                "mutability": "mutable",
                                "name": "amountOut",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4201,
                                "src": "8747:14:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4133,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8747:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 4140,
                            "initialValue": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4135,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4091,
                                "src": "8764:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4139,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4138,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4136,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4100,
                                  "src": "8772:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4137,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8776:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "8772:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8764:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "8747:31:8"
                          },
                          {
                            "assignments": [
                              4142,
                              4144
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4142,
                                "mutability": "mutable",
                                "name": "amount0Out",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4201,
                                "src": "8793:15:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4141,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8793:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 4144,
                                "mutability": "mutable",
                                "name": "amount1Out",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4201,
                                "src": "8810:15:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4143,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8810:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 4161,
                            "initialValue": {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 4147,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4145,
                                  "name": "input",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4112,
                                  "src": "8829:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 4146,
                                  "name": "token0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4126,
                                  "src": "8838:6:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8829:15:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4154,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4134,
                                    "src": "8871:9:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 4157,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8887:1:8",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 4156,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8882:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 4155,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8882:4:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 4158,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8882:7:8",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 4159,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "8870:20:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "id": 4160,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "8829:61:8",
                              "trueExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 4150,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8853:1:8",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 4149,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8848:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 4148,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8848:4:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 4151,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8848:7:8",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4152,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4134,
                                    "src": "8857:9:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 4153,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "8847:20:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "8792:98:8"
                          },
                          {
                            "assignments": [
                              4163
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4163,
                                "mutability": "mutable",
                                "name": "to",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4201,
                                "src": "8904:10:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 4162,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8904:7:8",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 4182,
                            "initialValue": {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4169,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4164,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4100,
                                  "src": "8917:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4168,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4165,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4094,
                                      "src": "8921:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 4166,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "8921:11:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 4167,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8935:1:8",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "8921:15:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8917:19:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "id": 4180,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4096,
                                "src": "8996:3:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 4181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "8917:82:8",
                              "trueExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4172,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3270,
                                    "src": "8964:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4173,
                                    "name": "output",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4114,
                                    "src": "8973:6:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 4174,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4094,
                                      "src": "8981:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 4178,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4177,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4175,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4100,
                                        "src": "8986:1:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 4176,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8990:1:8",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "8986:5:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8981:11:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4170,
                                    "name": "MarXDEXV2Library",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7172,
                                    "src": "8939:16:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                      "typeString": "type(library MarXDEXV2Library)"
                                    }
                                  },
                                  "id": 4171,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pairFor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6796,
                                  "src": "8939:24:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address) pure returns (address)"
                                  }
                                },
                                "id": 4179,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8939:54:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "8904:95:8"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4192,
                                  "name": "amount0Out",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4142,
                                  "src": "9100:10:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4193,
                                  "name": "amount1Out",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4144,
                                  "src": "9112:10:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4194,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4163,
                                  "src": "9124:2:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 4197,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9138:1:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 4196,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "9128:9:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (bytes memory)"
                                    },
                                    "typeName": {
                                      "id": 4195,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9132:5:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_storage_ptr",
                                        "typeString": "bytes"
                                      }
                                    }
                                  },
                                  "id": 4198,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9128:12:8",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 4186,
                                          "name": "factory",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3270,
                                          "src": "9053:7:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 4187,
                                          "name": "input",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4112,
                                          "src": "9062:5:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 4188,
                                          "name": "output",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4114,
                                          "src": "9069:6:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 4184,
                                          "name": "MarXDEXV2Library",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7172,
                                          "src": "9028:16:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                            "typeString": "type(library MarXDEXV2Library)"
                                          }
                                        },
                                        "id": 4185,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "pairFor",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6796,
                                        "src": "9028:24:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                          "typeString": "function (address,address,address) pure returns (address)"
                                        }
                                      },
                                      "id": 4189,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9028:48:8",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 4183,
                                    "name": "IMarXDEXV2Pair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1795,
                                    "src": "9013:14:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                      "typeString": "type(contract IMarXDEXV2Pair)"
                                    }
                                  },
                                  "id": 4190,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9013:64:8",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                    "typeString": "contract IMarXDEXV2Pair"
                                  }
                                },
                                "id": 4191,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "swap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1779,
                                "src": "9013:69:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                                  "typeString": "function (uint256,uint256,address,bytes memory) external"
                                }
                              },
                              "id": 4199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9013:141:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 4200,
                            "nodeType": "ExpressionStatement",
                            "src": "9013:141:8"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4107,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4102,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4100,
                          "src": "8561:1:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4106,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4103,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4094,
                              "src": "8565:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8565:11:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 4105,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8579:1:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "8565:15:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8561:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 4202,
                      "initializationExpression": {
                        "assignments": [
                          4100
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4100,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4202,
                            "src": "8553:6:8",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4099,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "8553:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4101,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8553:6:8"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "8582:3:8",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 4108,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4100,
                            "src": "8582:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4110,
                        "nodeType": "ExpressionStatement",
                        "src": "8582:3:8"
                      },
                      "nodeType": "ForStatement",
                      "src": "8548:617:8"
                    }
                  ]
                },
                "documentation": null,
                "id": 4204,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_swap",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4097,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4091,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4204,
                      "src": "8462:21:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4089,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8462:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4090,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8462:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4094,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4204,
                      "src": "8485:21:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4092,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8485:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4093,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "8485:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4096,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4204,
                      "src": "8508:11:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4095,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8508:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8461:59:8"
                },
                "returnParameters": {
                  "id": 4098,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "8538:0:8"
                },
                "scope": 5291,
                "src": "8447:724:8",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "internal"
              },
              {
                "baseFunctions": [
                  6455
                ],
                "body": {
                  "id": 4275,
                  "nodeType": "Block",
                  "src": "9417:374:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4232,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4225,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4223,
                          "src": "9427:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4228,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3270,
                              "src": "9468:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4229,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4206,
                              "src": "9477:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4230,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4211,
                              "src": "9487:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4226,
                              "name": "MarXDEXV2Library",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7172,
                              "src": "9437:16:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                "typeString": "type(library MarXDEXV2Library)"
                              }
                            },
                            "id": 4227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsOut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7086,
                            "src": "9437:30:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 4231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9437:55:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "9427:65:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 4233,
                      "nodeType": "ExpressionStatement",
                      "src": "9427:65:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4242,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4235,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4223,
                                "src": "9510:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4240,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4239,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4236,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4223,
                                    "src": "9518:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 4237,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9518:14:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4238,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9535:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "9518:18:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9510:27:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4241,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4208,
                              "src": "9541:12:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9510:43:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 4243,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9555:45:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 4234,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "9502:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4244,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9502:99:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4245,
                      "nodeType": "ExpressionStatement",
                      "src": "9502:99:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4249,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4211,
                              "src": "9656:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 4251,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9661:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9656:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4252,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "9665:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4253,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9665:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4256,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3270,
                                "src": "9702:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4257,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4211,
                                  "src": "9711:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4259,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4258,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9716:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9711:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4260,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4211,
                                  "src": "9720:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4262,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4261,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9725:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9720:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4254,
                                "name": "MarXDEXV2Library",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7172,
                                "src": "9677:16:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                  "typeString": "type(library MarXDEXV2Library)"
                                }
                              },
                              "id": 4255,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6796,
                              "src": "9677:24:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 4263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9677:51:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4264,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4223,
                              "src": "9730:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4266,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4265,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9738:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9730:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4246,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "9611:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "9611:31:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 4267,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9611:139:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4268,
                      "nodeType": "ExpressionStatement",
                      "src": "9611:139:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4270,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4223,
                            "src": "9766:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4271,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4211,
                            "src": "9775:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4272,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4213,
                            "src": "9781:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4269,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4204,
                          "src": "9760:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 4273,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9760:24:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4274,
                      "nodeType": "ExpressionStatement",
                      "src": "9760:24:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "38ed1739",
                "id": 4276,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4219,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4215,
                        "src": "9375:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 4220,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 4218,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3287,
                      "src": "9368:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "9368:16:8"
                  }
                ],
                "name": "swapExactTokensForTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 4217,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "9359:8:8"
                },
                "parameters": {
                  "id": 4216,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4206,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4276,
                      "src": "9219:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4205,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9219:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4208,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4276,
                      "src": "9242:17:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4207,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9242:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4211,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4276,
                      "src": "9269:23:8",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4209,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9269:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4210,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9269:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4213,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4276,
                      "src": "9302:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4212,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9302:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4215,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4276,
                      "src": "9322:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4214,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9322:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9209:132:8"
                },
                "returnParameters": {
                  "id": 4224,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4223,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4276,
                      "src": "9394:21:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4221,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9394:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4222,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9394:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9393:23:8"
                },
                "scope": 5291,
                "src": "9176:615:8",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6472
                ],
                "body": {
                  "id": 4344,
                  "nodeType": "Block",
                  "src": "10037:352:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4304,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4297,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4295,
                          "src": "10047:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4300,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3270,
                              "src": "10087:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4301,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4278,
                              "src": "10096:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4302,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4283,
                              "src": "10107:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4298,
                              "name": "MarXDEXV2Library",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7172,
                              "src": "10057:16:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                "typeString": "type(library MarXDEXV2Library)"
                              }
                            },
                            "id": 4299,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsIn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7171,
                            "src": "10057:29:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 4303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10057:55:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "10047:65:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 4305,
                      "nodeType": "ExpressionStatement",
                      "src": "10047:65:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4307,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4295,
                                "src": "10130:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4309,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4308,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10138:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10130:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4310,
                              "name": "amountInMax",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4280,
                              "src": "10144:11:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10130:25:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a204558434553534956455f494e5055545f414d4f554e54",
                            "id": 4312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10157:41:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3e1b1d3ba66318512221fd088332a90c6e56c7ab54ef486a6962ec70beeda886",
                              "typeString": "literal_string \"MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3e1b1d3ba66318512221fd088332a90c6e56c7ab54ef486a6962ec70beeda886",
                              "typeString": "literal_string \"MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 4306,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "10122:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4313,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10122:77:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4314,
                      "nodeType": "ExpressionStatement",
                      "src": "10122:77:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4318,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4283,
                              "src": "10254:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 4320,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10259:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10254:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4321,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "10263:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4322,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10263:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4325,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3270,
                                "src": "10300:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4326,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4283,
                                  "src": "10309:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4328,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4327,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10314:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10309:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4329,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4283,
                                  "src": "10318:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4331,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4330,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10323:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10318:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4323,
                                "name": "MarXDEXV2Library",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7172,
                                "src": "10275:16:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                  "typeString": "type(library MarXDEXV2Library)"
                                }
                              },
                              "id": 4324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6796,
                              "src": "10275:24:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 4332,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10275:51:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4333,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4295,
                              "src": "10328:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4335,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4334,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10336:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10328:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4315,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "10209:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "10209:31:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 4336,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10209:139:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4337,
                      "nodeType": "ExpressionStatement",
                      "src": "10209:139:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4339,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4295,
                            "src": "10364:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4340,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4283,
                            "src": "10373:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4341,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4285,
                            "src": "10379:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4338,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4204,
                          "src": "10358:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 4342,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10358:24:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4343,
                      "nodeType": "ExpressionStatement",
                      "src": "10358:24:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "8803dbee",
                "id": 4345,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4291,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4287,
                        "src": "9995:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 4292,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 4290,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3287,
                      "src": "9988:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "9988:16:8"
                  }
                ],
                "name": "swapTokensForExactTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 4289,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "9979:8:8"
                },
                "parameters": {
                  "id": 4288,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4278,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4345,
                      "src": "9839:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4277,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9839:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4280,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4345,
                      "src": "9863:16:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4279,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9863:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4283,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4345,
                      "src": "9889:23:8",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4281,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9889:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4282,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "9889:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4285,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4345,
                      "src": "9922:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4284,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9922:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4287,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4345,
                      "src": "9942:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4286,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9942:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9829:132:8"
                },
                "returnParameters": {
                  "id": 4296,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4295,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4345,
                      "src": "10014:21:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4293,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "10014:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4294,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10014:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10013:23:8"
                },
                "scope": 5291,
                "src": "9796:593:8",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6487
                ],
                "body": {
                  "id": 4432,
                  "nodeType": "Block",
                  "src": "10631:446:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 4369,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4365,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4350,
                                "src": "10649:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 4367,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4366,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10654:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10649:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4368,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3273,
                              "src": "10660:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "10649:15:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e56414c49445f50415448",
                            "id": 4370,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10666:31:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            },
                            "value": "MarXDEXV2Router: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            }
                          ],
                          "id": 4364,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "10641:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10641:57:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4372,
                      "nodeType": "ExpressionStatement",
                      "src": "10641:57:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4381,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4373,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4362,
                          "src": "10708:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4376,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3270,
                              "src": "10749:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4377,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "10758:3:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4378,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10758:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4379,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4350,
                              "src": "10769:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4374,
                              "name": "MarXDEXV2Library",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7172,
                              "src": "10718:16:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                "typeString": "type(library MarXDEXV2Library)"
                              }
                            },
                            "id": 4375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsOut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7086,
                            "src": "10718:30:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 4380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10718:56:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "10708:66:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 4382,
                      "nodeType": "ExpressionStatement",
                      "src": "10708:66:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4384,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4362,
                                "src": "10792:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4389,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4388,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4385,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4362,
                                    "src": "10800:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 4386,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "10800:14:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4387,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10817:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "10800:18:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10792:27:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4390,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4347,
                              "src": "10823:12:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10792:43:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 4392,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10837:45:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 4383,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "10784:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4393,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10784:99:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4394,
                      "nodeType": "ExpressionStatement",
                      "src": "10784:99:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4396,
                                  "name": "WETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3273,
                                  "src": "10899:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4395,
                                "name": "IWETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6700,
                                "src": "10893:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                  "typeString": "type(contract IWETH)"
                                }
                              },
                              "id": 4397,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10893:11:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$6700",
                                "typeString": "contract IWETH"
                              }
                            },
                            "id": 4398,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6685,
                            "src": "10893:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 4402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4399,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4362,
                                "src": "10920:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4401,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4400,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10928:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10920:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "10893:38:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                            "typeString": "function () payable external"
                          }
                        },
                        "id": 4403,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10893:40:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4404,
                      "nodeType": "ExpressionStatement",
                      "src": "10893:40:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4412,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3270,
                                    "src": "10996:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 4413,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4350,
                                      "src": "11005:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 4415,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 4414,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11010:1:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11005:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 4416,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4350,
                                      "src": "11014:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 4418,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 4417,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11019:1:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11014:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4410,
                                    "name": "MarXDEXV2Library",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7172,
                                    "src": "10971:16:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                      "typeString": "type(library MarXDEXV2Library)"
                                    }
                                  },
                                  "id": 4411,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pairFor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6796,
                                  "src": "10971:24:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address) pure returns (address)"
                                  }
                                },
                                "id": 4419,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10971:51:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4420,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4362,
                                  "src": "11024:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4422,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4421,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11032:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11024:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4407,
                                    "name": "WETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3273,
                                    "src": "10956:4:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4406,
                                  "name": "IWETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6700,
                                  "src": "10950:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                    "typeString": "type(contract IWETH)"
                                  }
                                },
                                "id": 4408,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10950:11:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWETH_$6700",
                                  "typeString": "contract IWETH"
                                }
                              },
                              "id": 4409,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6694,
                              "src": "10950:20:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 4423,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10950:85:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 4405,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "10943:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 4424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10943:93:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4425,
                      "nodeType": "ExpressionStatement",
                      "src": "10943:93:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4427,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4362,
                            "src": "11052:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4428,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4350,
                            "src": "11061:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4429,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4352,
                            "src": "11067:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4426,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4204,
                          "src": "11046:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 4430,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11046:24:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4431,
                      "nodeType": "ExpressionStatement",
                      "src": "11046:24:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "7ff36ab5",
                "id": 4433,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4358,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4354,
                        "src": "10577:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 4359,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 4357,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3287,
                      "src": "10570:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "10570:16:8"
                  }
                ],
                "name": "swapExactETHForTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 4356,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "10537:8:8"
                },
                "parameters": {
                  "id": 4355,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4347,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4433,
                      "src": "10425:17:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4346,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10425:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4350,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4433,
                      "src": "10444:23:8",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4348,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10444:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4349,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10444:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4352,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4433,
                      "src": "10469:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4351,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10469:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4354,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4433,
                      "src": "10481:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4353,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10481:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10424:71:8"
                },
                "returnParameters": {
                  "id": 4363,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4362,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4433,
                      "src": "10604:21:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4360,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "10604:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4361,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "10604:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10603:23:8"
                },
                "scope": 5291,
                "src": "10394:683:8",
                "stateMutability": "payable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6504
                ],
                "body": {
                  "id": 4540,
                  "nodeType": "Block",
                  "src": "11318:576:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 4462,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4455,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4440,
                                "src": "11336:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 4460,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4459,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4456,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4440,
                                    "src": "11341:4:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 4457,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "11341:11:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4458,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11355:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "11341:15:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11336:21:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4461,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3273,
                              "src": "11361:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "11336:29:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e56414c49445f50415448",
                            "id": 4463,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11367:31:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            },
                            "value": "MarXDEXV2Router: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            }
                          ],
                          "id": 4454,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "11328:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4464,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11328:71:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4465,
                      "nodeType": "ExpressionStatement",
                      "src": "11328:71:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4473,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4466,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4452,
                          "src": "11409:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4469,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3270,
                              "src": "11449:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4470,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4435,
                              "src": "11458:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4471,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4440,
                              "src": "11469:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4467,
                              "name": "MarXDEXV2Library",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7172,
                              "src": "11419:16:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                "typeString": "type(library MarXDEXV2Library)"
                              }
                            },
                            "id": 4468,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsIn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7171,
                            "src": "11419:29:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 4472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11419:55:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "11409:65:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 4474,
                      "nodeType": "ExpressionStatement",
                      "src": "11409:65:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4476,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4452,
                                "src": "11492:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4478,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4477,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11500:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11492:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4479,
                              "name": "amountInMax",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4437,
                              "src": "11506:11:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11492:25:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a204558434553534956455f494e5055545f414d4f554e54",
                            "id": 4481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11519:41:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3e1b1d3ba66318512221fd088332a90c6e56c7ab54ef486a6962ec70beeda886",
                              "typeString": "literal_string \"MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3e1b1d3ba66318512221fd088332a90c6e56c7ab54ef486a6962ec70beeda886",
                              "typeString": "literal_string \"MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 4475,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "11484:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4482,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11484:77:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4483,
                      "nodeType": "ExpressionStatement",
                      "src": "11484:77:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4487,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4440,
                              "src": "11616:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 4489,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4488,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11621:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11616:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4490,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "11625:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11625:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4494,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3270,
                                "src": "11662:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4495,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4440,
                                  "src": "11671:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4497,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4496,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11676:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11671:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4498,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4440,
                                  "src": "11680:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4500,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4499,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11685:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11680:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4492,
                                "name": "MarXDEXV2Library",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7172,
                                "src": "11637:16:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                  "typeString": "type(library MarXDEXV2Library)"
                                }
                              },
                              "id": 4493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6796,
                              "src": "11637:24:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 4501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11637:51:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4502,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4452,
                              "src": "11690:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4504,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4503,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11698:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11690:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4484,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "11571:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "11571:31:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 4505,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11571:139:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4506,
                      "nodeType": "ExpressionStatement",
                      "src": "11571:139:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4508,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4452,
                            "src": "11726:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4509,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4440,
                            "src": "11735:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4512,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "11749:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                  "typeString": "contract MarXDEXV2Router02"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                  "typeString": "contract MarXDEXV2Router02"
                                }
                              ],
                              "id": 4511,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11741:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4510,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11741:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 4513,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11741:13:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 4507,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4204,
                          "src": "11720:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 4514,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11720:35:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4515,
                      "nodeType": "ExpressionStatement",
                      "src": "11720:35:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4520,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4452,
                              "src": "11786:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4525,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4521,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4452,
                                  "src": "11794:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4522,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11794:14:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11811:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "11794:18:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11786:27:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4517,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3273,
                                "src": "11771:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4516,
                              "name": "IWETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6700,
                              "src": "11765:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                "typeString": "type(contract IWETH)"
                              }
                            },
                            "id": 4518,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11765:11:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$6700",
                              "typeString": "contract IWETH"
                            }
                          },
                          "id": 4519,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6699,
                          "src": "11765:20:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256) external"
                          }
                        },
                        "id": 4526,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11765:49:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4527,
                      "nodeType": "ExpressionStatement",
                      "src": "11765:49:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4531,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4442,
                            "src": "11855:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4532,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4452,
                              "src": "11859:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4537,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4536,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4533,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4452,
                                  "src": "11867:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4534,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "11867:14:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4535,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11884:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "11867:18:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11859:27:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4528,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "11824:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1489,
                          "src": "11824:30:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 4538,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11824:63:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4539,
                      "nodeType": "ExpressionStatement",
                      "src": "11824:63:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "4a25d94a",
                "id": 4541,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4448,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4444,
                        "src": "11264:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 4449,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 4447,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3287,
                      "src": "11257:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "11257:16:8"
                  }
                ],
                "name": "swapTokensForExactETH",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 4446,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "11240:8:8"
                },
                "parameters": {
                  "id": 4445,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4435,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4541,
                      "src": "11113:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4434,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11113:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4437,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4541,
                      "src": "11129:16:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4436,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11129:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4440,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4541,
                      "src": "11147:23:8",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4438,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11147:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4439,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "11147:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4442,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4541,
                      "src": "11172:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4441,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11172:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4444,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4541,
                      "src": "11184:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4443,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11184:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11112:86:8"
                },
                "returnParameters": {
                  "id": 4453,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4452,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4541,
                      "src": "11291:21:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4450,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "11291:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4451,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "11291:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11290:23:8"
                },
                "scope": 5291,
                "src": "11082:812:8",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6521
                ],
                "body": {
                  "id": 4651,
                  "nodeType": "Block",
                  "src": "12135:598:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 4570,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4563,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4548,
                                "src": "12153:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 4568,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4567,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4564,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4548,
                                    "src": "12158:4:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 4565,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12158:11:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4566,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12172:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "12158:15:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12153:21:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4569,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3273,
                              "src": "12178:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "12153:29:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e56414c49445f50415448",
                            "id": 4571,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12184:31:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            },
                            "value": "MarXDEXV2Router: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            }
                          ],
                          "id": 4562,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "12145:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12145:71:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4573,
                      "nodeType": "ExpressionStatement",
                      "src": "12145:71:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4581,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4574,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4560,
                          "src": "12226:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4577,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3270,
                              "src": "12267:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4578,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4543,
                              "src": "12276:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4579,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4548,
                              "src": "12286:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4575,
                              "name": "MarXDEXV2Library",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7172,
                              "src": "12236:16:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                "typeString": "type(library MarXDEXV2Library)"
                              }
                            },
                            "id": 4576,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsOut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7086,
                            "src": "12236:30:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 4580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12236:55:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "12226:65:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 4582,
                      "nodeType": "ExpressionStatement",
                      "src": "12226:65:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4584,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4560,
                                "src": "12309:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4589,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4585,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4560,
                                    "src": "12317:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 4586,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12317:14:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4587,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12334:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "12317:18:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12309:27:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4590,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4545,
                              "src": "12340:12:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12309:43:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 4592,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12354:45:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 4583,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "12301:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4593,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12301:99:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4594,
                      "nodeType": "ExpressionStatement",
                      "src": "12301:99:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4598,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4548,
                              "src": "12455:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 4600,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4599,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12460:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12455:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4601,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "12464:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12464:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4605,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3270,
                                "src": "12501:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4606,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4548,
                                  "src": "12510:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4608,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4607,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12515:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12510:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4609,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4548,
                                  "src": "12519:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4611,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4610,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12524:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12519:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4603,
                                "name": "MarXDEXV2Library",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7172,
                                "src": "12476:16:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                  "typeString": "type(library MarXDEXV2Library)"
                                }
                              },
                              "id": 4604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6796,
                              "src": "12476:24:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 4612,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12476:51:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4613,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4560,
                              "src": "12529:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4615,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12537:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12529:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4595,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "12410:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "12410:31:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 4616,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12410:139:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4617,
                      "nodeType": "ExpressionStatement",
                      "src": "12410:139:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4619,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4560,
                            "src": "12565:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4620,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4548,
                            "src": "12574:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4623,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "12588:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                  "typeString": "contract MarXDEXV2Router02"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                  "typeString": "contract MarXDEXV2Router02"
                                }
                              ],
                              "id": 4622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12580:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4621,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12580:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 4624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12580:13:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 4618,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4204,
                          "src": "12559:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 4625,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12559:35:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4626,
                      "nodeType": "ExpressionStatement",
                      "src": "12559:35:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4631,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4560,
                              "src": "12625:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4636,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4635,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4632,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4560,
                                  "src": "12633:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4633,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "12633:14:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12650:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "12633:18:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12625:27:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4628,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3273,
                                "src": "12610:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4627,
                              "name": "IWETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6700,
                              "src": "12604:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                "typeString": "type(contract IWETH)"
                              }
                            },
                            "id": 4629,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12604:11:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$6700",
                              "typeString": "contract IWETH"
                            }
                          },
                          "id": 4630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6699,
                          "src": "12604:20:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256) external"
                          }
                        },
                        "id": 4637,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12604:49:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4638,
                      "nodeType": "ExpressionStatement",
                      "src": "12604:49:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4642,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4550,
                            "src": "12694:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4643,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4560,
                              "src": "12698:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 4648,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4644,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4560,
                                  "src": "12706:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4645,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "12706:14:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 4646,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12723:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "12706:18:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12698:27:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4639,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "12663:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1489,
                          "src": "12663:30:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 4649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12663:63:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4650,
                      "nodeType": "ExpressionStatement",
                      "src": "12663:63:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "18cbafe5",
                "id": 4652,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4556,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4552,
                        "src": "12081:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 4557,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 4555,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3287,
                      "src": "12074:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "12074:16:8"
                  }
                ],
                "name": "swapExactTokensForETH",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 4554,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "12057:8:8"
                },
                "parameters": {
                  "id": 4553,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4543,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4652,
                      "src": "11930:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4542,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11930:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4545,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4652,
                      "src": "11945:17:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4544,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11945:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4548,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4652,
                      "src": "11964:23:8",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4546,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11964:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4547,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "11964:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4550,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4652,
                      "src": "11989:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4549,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11989:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4552,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4652,
                      "src": "12001:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4551,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12001:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11929:86:8"
                },
                "returnParameters": {
                  "id": 4561,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4560,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4652,
                      "src": "12108:21:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4558,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "12108:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4559,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "12108:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12107:23:8"
                },
                "scope": 5291,
                "src": "11899:834:8",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6536
                ],
                "body": {
                  "id": 4756,
                  "nodeType": "Block",
                  "src": "12972:560:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 4676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4672,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4657,
                                "src": "12990:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 4674,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4673,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12995:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12990:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4675,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3273,
                              "src": "13001:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "12990:15:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e56414c49445f50415448",
                            "id": 4677,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13007:31:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            },
                            "value": "MarXDEXV2Router: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            }
                          ],
                          "id": 4671,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "12982:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4678,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12982:57:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4679,
                      "nodeType": "ExpressionStatement",
                      "src": "12982:57:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 4687,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 4680,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4669,
                          "src": "13049:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4683,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3270,
                              "src": "13089:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4684,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4654,
                              "src": "13098:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 4685,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4657,
                              "src": "13109:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4681,
                              "name": "MarXDEXV2Library",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7172,
                              "src": "13059:16:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                "typeString": "type(library MarXDEXV2Library)"
                              }
                            },
                            "id": 4682,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsIn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7171,
                            "src": "13059:29:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                            }
                          },
                          "id": 4686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13059:55:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "13049:65:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 4688,
                      "nodeType": "ExpressionStatement",
                      "src": "13049:65:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4695,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4690,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4669,
                                "src": "13132:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4692,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4691,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13140:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13132:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4693,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "13146:3:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4694,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13146:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13132:23:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a204558434553534956455f494e5055545f414d4f554e54",
                            "id": 4696,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13157:41:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3e1b1d3ba66318512221fd088332a90c6e56c7ab54ef486a6962ec70beeda886",
                              "typeString": "literal_string \"MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3e1b1d3ba66318512221fd088332a90c6e56c7ab54ef486a6962ec70beeda886",
                              "typeString": "literal_string \"MarXDEXV2Router: EXCESSIVE_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 4689,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "13124:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13124:75:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4698,
                      "nodeType": "ExpressionStatement",
                      "src": "13124:75:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4700,
                                  "name": "WETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3273,
                                  "src": "13215:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4699,
                                "name": "IWETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6700,
                                "src": "13209:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                  "typeString": "type(contract IWETH)"
                                }
                              },
                              "id": 4701,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13209:11:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$6700",
                                "typeString": "contract IWETH"
                              }
                            },
                            "id": 4702,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6685,
                            "src": "13209:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 4706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4703,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4669,
                                "src": "13236:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 4705,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13244:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13236:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "13209:38:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                            "typeString": "function () payable external"
                          }
                        },
                        "id": 4707,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13209:40:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4708,
                      "nodeType": "ExpressionStatement",
                      "src": "13209:40:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4716,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3270,
                                    "src": "13312:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 4717,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4657,
                                      "src": "13321:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 4719,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 4718,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13326:1:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13321:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 4720,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4657,
                                      "src": "13330:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 4722,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 4721,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13335:1:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "13330:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4714,
                                    "name": "MarXDEXV2Library",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7172,
                                    "src": "13287:16:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                      "typeString": "type(library MarXDEXV2Library)"
                                    }
                                  },
                                  "id": 4715,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pairFor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6796,
                                  "src": "13287:24:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address) pure returns (address)"
                                  }
                                },
                                "id": 4723,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13287:51:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4724,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4669,
                                  "src": "13340:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4726,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4725,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13348:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13340:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4711,
                                    "name": "WETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3273,
                                    "src": "13272:4:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4710,
                                  "name": "IWETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6700,
                                  "src": "13266:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                    "typeString": "type(contract IWETH)"
                                  }
                                },
                                "id": 4712,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13266:11:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWETH_$6700",
                                  "typeString": "contract IWETH"
                                }
                              },
                              "id": 4713,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6694,
                              "src": "13266:20:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 4727,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13266:85:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 4709,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "13259:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 4728,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13259:93:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4729,
                      "nodeType": "ExpressionStatement",
                      "src": "13259:93:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4731,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4669,
                            "src": "13368:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4732,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4657,
                            "src": "13377:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4733,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4659,
                            "src": "13383:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4730,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4204,
                          "src": "13362:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 4734,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13362:24:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4735,
                      "nodeType": "ExpressionStatement",
                      "src": "13362:24:8"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4741,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4736,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "13435:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 4737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "13435:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4738,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4669,
                            "src": "13447:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 4740,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 4739,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13455:1:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "13447:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "13435:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 4755,
                      "nodeType": "IfStatement",
                      "src": "13431:94:8",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4745,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "13490:3:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13490:10:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4747,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "13502:3:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4748,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13502:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4749,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4669,
                                  "src": "13514:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4751,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4750,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13522:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "13514:10:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13502:22:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4742,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1490,
                              "src": "13459:14:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 4744,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferETH",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1489,
                            "src": "13459:30:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 4753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13459:66:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4754,
                        "nodeType": "ExpressionStatement",
                        "src": "13459:66:8"
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "fb3bdb41",
                "id": 4757,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4665,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4661,
                        "src": "12918:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 4666,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 4664,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3287,
                      "src": "12911:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "12911:16:8"
                  }
                ],
                "name": "swapETHForExactTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 4663,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "12878:8:8"
                },
                "parameters": {
                  "id": 4662,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4654,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4757,
                      "src": "12769:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4653,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12769:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4657,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4757,
                      "src": "12785:23:8",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4655,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12785:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4656,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "12785:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4659,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4757,
                      "src": "12810:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4658,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12810:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4661,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4757,
                      "src": "12822:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4660,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12822:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12768:68:8"
                },
                "returnParameters": {
                  "id": 4670,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4669,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4757,
                      "src": "12945:21:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4667,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "12945:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4668,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "12945:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12944:23:8"
                },
                "scope": 5291,
                "src": "12738:794:8",
                "stateMutability": "payable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 4920,
                  "nodeType": "Block",
                  "src": "13772:1100:8",
                  "statements": [
                    {
                      "body": {
                        "id": 4918,
                        "nodeType": "Block",
                        "src": "13821:1045:8",
                        "statements": [
                          {
                            "assignments": [
                              4778,
                              4780
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4778,
                                "mutability": "mutable",
                                "name": "input",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4918,
                                "src": "13836:13:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 4777,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13836:7:8",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 4780,
                                "mutability": "mutable",
                                "name": "output",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4918,
                                "src": "13851:14:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 4779,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13851:7:8",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 4790,
                            "initialValue": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4781,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4760,
                                    "src": "13870:4:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 4783,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4782,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4766,
                                    "src": "13875:1:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13870:7:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4784,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4760,
                                    "src": "13879:4:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 4788,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4787,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 4785,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4766,
                                      "src": "13884:1:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 4786,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13888:1:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "13884:5:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13879:11:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "id": 4789,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "13869:22:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                "typeString": "tuple(address,address)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13835:56:8"
                          },
                          {
                            "assignments": [
                              4792,
                              null
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4792,
                                "mutability": "mutable",
                                "name": "token0",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4918,
                                "src": "13906:14:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 4791,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13906:7:8",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              null
                            ],
                            "id": 4798,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4795,
                                  "name": "input",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4778,
                                  "src": "13953:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4796,
                                  "name": "output",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4780,
                                  "src": "13960:6:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4793,
                                  "name": "MarXDEXV2Library",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7172,
                                  "src": "13925:16:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                    "typeString": "type(library MarXDEXV2Library)"
                                  }
                                },
                                "id": 4794,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sortTokens",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6751,
                                "src": "13925:27:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                                  "typeString": "function (address,address) pure returns (address,address)"
                                }
                              },
                              "id": 4797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13925:42:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                "typeString": "tuple(address,address)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13905:62:8"
                          },
                          {
                            "assignments": [
                              4800
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4800,
                                "mutability": "mutable",
                                "name": "pair",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4918,
                                "src": "13981:19:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                  "typeString": "contract IMarXDEXV2Pair"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 4799,
                                  "name": "IMarXDEXV2Pair",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 1795,
                                  "src": "13981:14:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                    "typeString": "contract IMarXDEXV2Pair"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 4809,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4804,
                                      "name": "factory",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3270,
                                      "src": "14043:7:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 4805,
                                      "name": "input",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4778,
                                      "src": "14052:5:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 4806,
                                      "name": "output",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4780,
                                      "src": "14059:6:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4802,
                                      "name": "MarXDEXV2Library",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7172,
                                      "src": "14018:16:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                        "typeString": "type(library MarXDEXV2Library)"
                                      }
                                    },
                                    "id": 4803,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pairFor",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6796,
                                    "src": "14018:24:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                      "typeString": "function (address,address,address) pure returns (address)"
                                    }
                                  },
                                  "id": 4807,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14018:48:8",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4801,
                                "name": "IMarXDEXV2Pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1795,
                                "src": "14003:14:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                  "typeString": "type(contract IMarXDEXV2Pair)"
                                }
                              },
                              "id": 4808,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14003:64:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                "typeString": "contract IMarXDEXV2Pair"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13981:86:8"
                          },
                          {
                            "assignments": [
                              4811
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4811,
                                "mutability": "mutable",
                                "name": "amountInput",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4918,
                                "src": "14081:16:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4810,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14081:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 4812,
                            "initialValue": null,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "14081:16:8"
                          },
                          {
                            "assignments": [
                              4814
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4814,
                                "mutability": "mutable",
                                "name": "amountOutput",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4918,
                                "src": "14111:17:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4813,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14111:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 4815,
                            "initialValue": null,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "14111:17:8"
                          },
                          {
                            "id": 4863,
                            "nodeType": "Block",
                            "src": "14142:422:8",
                            "statements": [
                              {
                                "assignments": [
                                  4817,
                                  4819,
                                  null
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 4817,
                                    "mutability": "mutable",
                                    "name": "reserve0",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 4863,
                                    "src": "14197:13:8",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 4816,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14197:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  },
                                  {
                                    "constant": false,
                                    "id": 4819,
                                    "mutability": "mutable",
                                    "name": "reserve1",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 4863,
                                    "src": "14212:13:8",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 4818,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14212:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  },
                                  null
                                ],
                                "id": 4823,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4820,
                                      "name": "pair",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4800,
                                      "src": "14230:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                        "typeString": "contract IMarXDEXV2Pair"
                                      }
                                    },
                                    "id": 4821,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getReserves",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1737,
                                    "src": "14230:16:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                                      "typeString": "function () view external returns (uint112,uint112,uint32)"
                                    }
                                  },
                                  "id": 4822,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14230:18:8",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                                    "typeString": "tuple(uint112,uint112,uint32)"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "14196:52:8"
                              },
                              {
                                "assignments": [
                                  4825,
                                  4827
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 4825,
                                    "mutability": "mutable",
                                    "name": "reserveInput",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 4863,
                                    "src": "14263:17:8",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 4824,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14263:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  },
                                  {
                                    "constant": false,
                                    "id": 4827,
                                    "mutability": "mutable",
                                    "name": "reserveOutput",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 4863,
                                    "src": "14282:18:8",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 4826,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14282:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 4838,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "condition": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 4830,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 4828,
                                      "name": "input",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4778,
                                      "src": "14304:5:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 4829,
                                      "name": "token0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4792,
                                      "src": "14313:6:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "14304:15:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4834,
                                        "name": "reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4819,
                                        "src": "14346:8:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 4835,
                                        "name": "reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4817,
                                        "src": "14356:8:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4836,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "14345:20:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                      "typeString": "tuple(uint256,uint256)"
                                    }
                                  },
                                  "id": 4837,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "14304:61:8",
                                  "trueExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4831,
                                        "name": "reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4817,
                                        "src": "14323:8:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 4832,
                                        "name": "reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4819,
                                        "src": "14333:8:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4833,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "14322:20:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                      "typeString": "tuple(uint256,uint256)"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256)"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "14262:103:8"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4852,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 4839,
                                    "name": "amountInput",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4811,
                                    "src": "14379:11:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4850,
                                        "name": "reserveInput",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4825,
                                        "src": "14436:12:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 4846,
                                                "name": "pair",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4800,
                                                "src": "14425:4:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                                  "typeString": "contract IMarXDEXV2Pair"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                                  "typeString": "contract IMarXDEXV2Pair"
                                                }
                                              ],
                                              "id": 4845,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "14417:7:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 4844,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14417:7:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            },
                                            "id": 4847,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "14417:13:8",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 4841,
                                                "name": "input",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4778,
                                                "src": "14400:5:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 4840,
                                              "name": "IERC20",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6284,
                                              "src": "14393:6:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$6284_$",
                                                "typeString": "type(contract IERC20)"
                                              }
                                            },
                                            "id": 4842,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "14393:13:8",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IERC20_$6284",
                                              "typeString": "contract IERC20"
                                            }
                                          },
                                          "id": 4843,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "balanceOf",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6245,
                                          "src": "14393:23:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                            "typeString": "function (address) view external returns (uint256)"
                                          }
                                        },
                                        "id": 4848,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14393:38:8",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 4849,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7791,
                                      "src": "14393:42:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 4851,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14393:56:8",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "14379:70:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 4853,
                                "nodeType": "ExpressionStatement",
                                "src": "14379:70:8"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4861,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 4854,
                                    "name": "amountOutput",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4814,
                                    "src": "14463:12:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4857,
                                        "name": "amountInput",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4811,
                                        "src": "14508:11:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 4858,
                                        "name": "reserveInput",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4825,
                                        "src": "14521:12:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 4859,
                                        "name": "reserveOutput",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4827,
                                        "src": "14535:13:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4855,
                                        "name": "MarXDEXV2Library",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7172,
                                        "src": "14478:16:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                          "typeString": "type(library MarXDEXV2Library)"
                                        }
                                      },
                                      "id": 4856,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getAmountOut",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6945,
                                      "src": "14478:29:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 4860,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14478:71:8",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "14463:86:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 4862,
                                "nodeType": "ExpressionStatement",
                                "src": "14463:86:8"
                              }
                            ]
                          },
                          {
                            "assignments": [
                              4865,
                              4867
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4865,
                                "mutability": "mutable",
                                "name": "amount0Out",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4918,
                                "src": "14578:15:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4864,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14578:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 4867,
                                "mutability": "mutable",
                                "name": "amount1Out",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4918,
                                "src": "14595:15:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4866,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14595:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 4884,
                            "initialValue": {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 4870,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4868,
                                  "name": "input",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4778,
                                  "src": "14614:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 4869,
                                  "name": "token0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4792,
                                  "src": "14623:6:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "14614:15:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4877,
                                    "name": "amountOutput",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4814,
                                    "src": "14659:12:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 4880,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14678:1:8",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 4879,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "14673:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 4878,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "14673:4:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 4881,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14673:7:8",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 4882,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "14658:23:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "id": 4883,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "14614:67:8",
                              "trueExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "30",
                                        "id": 4873,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14638:1:8",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 4872,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "14633:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 4871,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "14633:4:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 4874,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14633:7:8",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4875,
                                    "name": "amountOutput",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4814,
                                    "src": "14642:12:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 4876,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "14632:23:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "14577:104:8"
                          },
                          {
                            "assignments": [
                              4886
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4886,
                                "mutability": "mutable",
                                "name": "to",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4918,
                                "src": "14695:10:8",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 4885,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14695:7:8",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 4905,
                            "initialValue": {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4892,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4887,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4766,
                                  "src": "14708:1:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4891,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4888,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4760,
                                      "src": "14712:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 4889,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "14712:11:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 4890,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14726:1:8",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "14712:15:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14708:19:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "id": 4903,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4762,
                                "src": "14787:3:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 4904,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "14708:82:8",
                              "trueExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4895,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3270,
                                    "src": "14755:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4896,
                                    "name": "output",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4780,
                                    "src": "14764:6:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 4897,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4760,
                                      "src": "14772:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 4901,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4900,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4898,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4766,
                                        "src": "14777:1:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 4899,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14781:1:8",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "14777:5:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "14772:11:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4893,
                                    "name": "MarXDEXV2Library",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7172,
                                    "src": "14730:16:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                      "typeString": "type(library MarXDEXV2Library)"
                                    }
                                  },
                                  "id": 4894,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pairFor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6796,
                                  "src": "14730:24:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address) pure returns (address)"
                                  }
                                },
                                "id": 4902,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14730:54:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "14695:95:8"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4909,
                                  "name": "amount0Out",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4865,
                                  "src": "14814:10:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4910,
                                  "name": "amount1Out",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4867,
                                  "src": "14826:10:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4911,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4886,
                                  "src": "14838:2:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 4914,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14852:1:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 4913,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "14842:9:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (bytes memory)"
                                    },
                                    "typeName": {
                                      "id": 4912,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14846:5:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_storage_ptr",
                                        "typeString": "bytes"
                                      }
                                    }
                                  },
                                  "id": 4915,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14842:12:8",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4906,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4800,
                                  "src": "14804:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                    "typeString": "contract IMarXDEXV2Pair"
                                  }
                                },
                                "id": 4908,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "swap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1779,
                                "src": "14804:9:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                                  "typeString": "function (uint256,uint256,address,bytes memory) external"
                                }
                              },
                              "id": 4916,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14804:51:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 4917,
                            "nodeType": "ExpressionStatement",
                            "src": "14804:51:8"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4773,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4768,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4766,
                          "src": "13795:1:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4769,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4760,
                              "src": "13799:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "13799:11:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 4771,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13813:1:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "13799:15:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "13795:19:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 4919,
                      "initializationExpression": {
                        "assignments": [
                          4766
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4766,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4919,
                            "src": "13787:6:8",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4765,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "13787:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4767,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13787:6:8"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "13816:3:8",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 4774,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4766,
                            "src": "13816:1:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4776,
                        "nodeType": "ExpressionStatement",
                        "src": "13816:3:8"
                      },
                      "nodeType": "ForStatement",
                      "src": "13782:1084:8"
                    }
                  ]
                },
                "documentation": null,
                "id": 4921,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_swapSupportingFeeOnTransferTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4763,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4760,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4921,
                      "src": "13719:21:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4758,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13719:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4759,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "13719:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4762,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4921,
                      "src": "13742:11:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4761,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13742:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13718:36:8"
                },
                "returnParameters": {
                  "id": 4764,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "13772:0:8"
                },
                "scope": 5291,
                "src": "13675:1197:8",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "internal"
              },
              {
                "baseFunctions": [
                  6653
                ],
                "body": {
                  "id": 4999,
                  "nodeType": "Block",
                  "src": "15115:460:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4942,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4928,
                              "src": "15170:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 4944,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4943,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15175:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15170:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4945,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "15179:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4946,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "15179:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4949,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3270,
                                "src": "15216:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4950,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4928,
                                  "src": "15225:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4952,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4951,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15230:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15225:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4953,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4928,
                                  "src": "15234:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4955,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4954,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15239:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15234:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4947,
                                "name": "MarXDEXV2Library",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7172,
                                "src": "15191:16:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                  "typeString": "type(library MarXDEXV2Library)"
                                }
                              },
                              "id": 4948,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6796,
                              "src": "15191:24:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 4956,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15191:51:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4957,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4923,
                            "src": "15244:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4939,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "15125:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "15125:31:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 4958,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15125:137:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4959,
                      "nodeType": "ExpressionStatement",
                      "src": "15125:137:8"
                    },
                    {
                      "assignments": [
                        4961
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4961,
                          "mutability": "mutable",
                          "name": "balanceBefore",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4999,
                          "src": "15272:18:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4960,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "15272:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4973,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4971,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4930,
                            "src": "15333:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4963,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4928,
                                  "src": "15300:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4968,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4967,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4964,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4928,
                                      "src": "15305:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 4965,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "15305:11:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 4966,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15319:1:8",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "15305:15:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15300:21:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4962,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6284,
                              "src": "15293:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$6284_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 4969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15293:29:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$6284",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6245,
                          "src": "15293:39:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 4972,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15293:43:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "15272:64:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4975,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4928,
                            "src": "15381:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4976,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4930,
                            "src": "15387:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4974,
                          "name": "_swapSupportingFeeOnTransferTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4921,
                          "src": "15346:34:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (address[] memory,address)"
                          }
                        },
                        "id": 4977,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15346:44:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4978,
                      "nodeType": "ExpressionStatement",
                      "src": "15346:44:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4992,
                                  "name": "balanceBefore",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4961,
                                  "src": "15469:13:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4989,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4930,
                                      "src": "15461:2:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 4981,
                                            "name": "path",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4928,
                                            "src": "15428:4:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                              "typeString": "address[] calldata"
                                            }
                                          },
                                          "id": 4986,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 4985,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4982,
                                                "name": "path",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4928,
                                                "src": "15433:4:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                  "typeString": "address[] calldata"
                                                }
                                              },
                                              "id": 4983,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "length",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "15433:11:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "31",
                                              "id": 4984,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "15447:1:8",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "15433:15:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "15428:21:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 4980,
                                        "name": "IERC20",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6284,
                                        "src": "15421:6:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20_$6284_$",
                                          "typeString": "type(contract IERC20)"
                                        }
                                      },
                                      "id": 4987,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "15421:29:8",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$6284",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 4988,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6245,
                                    "src": "15421:39:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 4990,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15421:43:8",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 4991,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7791,
                                "src": "15421:47:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 4993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15421:62:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4994,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4925,
                              "src": "15487:12:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15421:78:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 4996,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15513:45:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 4979,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "15400:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4997,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15400:168:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4998,
                      "nodeType": "ExpressionStatement",
                      "src": "15400:168:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "5c11d795",
                "id": 5000,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4936,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4932,
                        "src": "15105:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 4937,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 4935,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3287,
                      "src": "15098:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "15098:16:8"
                  }
                ],
                "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 4934,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "15089:8:8"
                },
                "parameters": {
                  "id": 4933,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4923,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5000,
                      "src": "14949:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4922,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14949:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4925,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5000,
                      "src": "14972:17:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4924,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14972:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4928,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5000,
                      "src": "14999:23:8",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4926,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14999:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4927,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "14999:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4930,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5000,
                      "src": "15032:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4929,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15032:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4932,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5000,
                      "src": "15052:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4931,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15052:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "14939:132:8"
                },
                "returnParameters": {
                  "id": 4938,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "15115:0:8"
                },
                "scope": 5291,
                "src": "14877:698:8",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6665
                ],
                "body": {
                  "id": 5096,
                  "nodeType": "Block",
                  "src": "15844:564:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5021,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5017,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5005,
                                "src": "15862:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 5019,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15867:1:8",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15862:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 5020,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3273,
                              "src": "15873:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "15862:15:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e56414c49445f50415448",
                            "id": 5022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15879:31:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            },
                            "value": "MarXDEXV2Router: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            }
                          ],
                          "id": 5016,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "15854:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5023,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15854:57:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5024,
                      "nodeType": "ExpressionStatement",
                      "src": "15854:57:8"
                    },
                    {
                      "assignments": [
                        5026
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5026,
                          "mutability": "mutable",
                          "name": "amountIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5096,
                          "src": "15921:13:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5025,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "15921:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5029,
                      "initialValue": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 5027,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "15937:3:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5028,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "15937:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "15921:25:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5031,
                                  "name": "WETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3273,
                                  "src": "15962:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 5030,
                                "name": "IWETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6700,
                                "src": "15956:5:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                  "typeString": "type(contract IWETH)"
                                }
                              },
                              "id": 5032,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15956:11:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$6700",
                                "typeString": "contract IWETH"
                              }
                            },
                            "id": 5033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6685,
                            "src": "15956:19:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 5035,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "argumentTypes": null,
                              "id": 5034,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5026,
                              "src": "15983:8:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "15956:36:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                            "typeString": "function () payable external"
                          }
                        },
                        "id": 5036,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15956:38:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5037,
                      "nodeType": "ExpressionStatement",
                      "src": "15956:38:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5045,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3270,
                                    "src": "16057:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 5046,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5005,
                                      "src": "16066:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 5048,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 5047,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "16071:1:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "16066:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 5049,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5005,
                                      "src": "16075:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 5051,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 5050,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "16080:1:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "16075:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5043,
                                    "name": "MarXDEXV2Library",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7172,
                                    "src": "16032:16:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                      "typeString": "type(library MarXDEXV2Library)"
                                    }
                                  },
                                  "id": 5044,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pairFor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6796,
                                  "src": "16032:24:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address) pure returns (address)"
                                  }
                                },
                                "id": 5052,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16032:51:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 5053,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5026,
                                "src": "16085:8:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5040,
                                    "name": "WETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3273,
                                    "src": "16017:4:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5039,
                                  "name": "IWETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6700,
                                  "src": "16011:5:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                    "typeString": "type(contract IWETH)"
                                  }
                                },
                                "id": 5041,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16011:11:8",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWETH_$6700",
                                  "typeString": "contract IWETH"
                                }
                              },
                              "id": 5042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6694,
                              "src": "16011:20:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 5054,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16011:83:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 5038,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "16004:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 5055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16004:91:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5056,
                      "nodeType": "ExpressionStatement",
                      "src": "16004:91:8"
                    },
                    {
                      "assignments": [
                        5058
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5058,
                          "mutability": "mutable",
                          "name": "balanceBefore",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5096,
                          "src": "16105:18:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5057,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "16105:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5070,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5068,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5007,
                            "src": "16166:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 5060,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5005,
                                  "src": "16133:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 5065,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5064,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 5061,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5005,
                                      "src": "16138:4:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 5062,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "16138:11:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 5063,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16152:1:8",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "16138:15:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16133:21:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5059,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6284,
                              "src": "16126:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$6284_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 5066,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16126:29:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$6284",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 5067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6245,
                          "src": "16126:39:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 5069,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16126:43:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16105:64:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5072,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5005,
                            "src": "16214:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5073,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5007,
                            "src": "16220:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 5071,
                          "name": "_swapSupportingFeeOnTransferTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4921,
                          "src": "16179:34:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (address[] memory,address)"
                          }
                        },
                        "id": 5074,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16179:44:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5075,
                      "nodeType": "ExpressionStatement",
                      "src": "16179:44:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5092,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5089,
                                  "name": "balanceBefore",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5058,
                                  "src": "16302:13:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5086,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5007,
                                      "src": "16294:2:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 5078,
                                            "name": "path",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5005,
                                            "src": "16261:4:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                              "typeString": "address[] calldata"
                                            }
                                          },
                                          "id": 5083,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 5082,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 5079,
                                                "name": "path",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5005,
                                                "src": "16266:4:8",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                  "typeString": "address[] calldata"
                                                }
                                              },
                                              "id": 5080,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "length",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "16266:11:8",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "31",
                                              "id": 5081,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "16280:1:8",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "16266:15:8",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "16261:21:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 5077,
                                        "name": "IERC20",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6284,
                                        "src": "16254:6:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20_$6284_$",
                                          "typeString": "type(contract IERC20)"
                                        }
                                      },
                                      "id": 5084,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16254:29:8",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$6284",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 5085,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6245,
                                    "src": "16254:39:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 5087,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16254:43:8",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 5088,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7791,
                                "src": "16254:47:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 5090,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16254:62:8",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 5091,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5002,
                              "src": "16320:12:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "16254:78:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 5093,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16346:45:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 5076,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "16233:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16233:168:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5095,
                      "nodeType": "ExpressionStatement",
                      "src": "16233:168:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "b6f9de95",
                "id": 5097,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5013,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5009,
                        "src": "15830:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 5014,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 5012,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3287,
                      "src": "15823:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "15823:16:8"
                  }
                ],
                "name": "swapExactETHForTokensSupportingFeeOnTransferTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 5011,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "15790:8:8"
                },
                "parameters": {
                  "id": 5010,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5002,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "15649:17:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5001,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15649:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5005,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "15676:23:8",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5003,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15676:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5004,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "15676:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5007,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "15709:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5006,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15709:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5009,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "15729:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5008,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15729:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "15639:109:8"
                },
                "returnParameters": {
                  "id": 5015,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "15844:0:8"
                },
                "scope": 5291,
                "src": "15580:828:8",
                "stateMutability": "payable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6679
                ],
                "body": {
                  "id": 5189,
                  "nodeType": "Block",
                  "src": "16684:551:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5123,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 5116,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5104,
                                "src": "16702:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 5121,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5117,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5104,
                                    "src": "16707:4:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 5118,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "16707:11:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 5119,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16721:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "16707:15:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16702:21:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 5122,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3273,
                              "src": "16727:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "16702:29:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e56414c49445f50415448",
                            "id": 5124,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16733:31:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            },
                            "value": "MarXDEXV2Router: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_f4d843c14dd5748162168d4b851a364534c86b4807dd8ee74bdb03031e23ac9e",
                              "typeString": "literal_string \"MarXDEXV2Router: INVALID_PATH\""
                            }
                          ],
                          "id": 5115,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "16694:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16694:71:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5126,
                      "nodeType": "ExpressionStatement",
                      "src": "16694:71:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5130,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5104,
                              "src": "16820:4:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 5132,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16825:1:8",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16820:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5133,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "16829:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 5134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "16829:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5137,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3270,
                                "src": "16866:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 5138,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5104,
                                  "src": "16875:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 5140,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 5139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16880:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16875:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 5141,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5104,
                                  "src": "16884:4:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 5143,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 5142,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16889:1:8",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16884:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 5135,
                                "name": "MarXDEXV2Library",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7172,
                                "src": "16841:16:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                  "typeString": "type(library MarXDEXV2Library)"
                                }
                              },
                              "id": 5136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6796,
                              "src": "16841:24:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 5144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16841:51:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5145,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5099,
                            "src": "16894:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5127,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "16775:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 5129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "16775:31:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 5146,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16775:137:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5147,
                      "nodeType": "ExpressionStatement",
                      "src": "16775:137:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5149,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5104,
                            "src": "16957:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5152,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "16971:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                  "typeString": "contract MarXDEXV2Router02"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                  "typeString": "contract MarXDEXV2Router02"
                                }
                              ],
                              "id": 5151,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "16963:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5150,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "16963:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5153,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16963:13:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 5148,
                          "name": "_swapSupportingFeeOnTransferTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4921,
                          "src": "16922:34:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (address[] memory,address)"
                          }
                        },
                        "id": 5154,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16922:55:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5155,
                      "nodeType": "ExpressionStatement",
                      "src": "16922:55:8"
                    },
                    {
                      "assignments": [
                        5157
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5157,
                          "mutability": "mutable",
                          "name": "amountOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5189,
                          "src": "16987:14:8",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5156,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "16987:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5167,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5164,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "17035:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                  "typeString": "contract MarXDEXV2Router02"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MarXDEXV2Router02_$5291",
                                  "typeString": "contract MarXDEXV2Router02"
                                }
                              ],
                              "id": 5163,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17027:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5162,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "17027:7:8",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5165,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17027:13:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5159,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3273,
                                "src": "17011:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5158,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6284,
                              "src": "17004:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$6284_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 5160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17004:12:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$6284",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 5161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6245,
                          "src": "17004:22:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 5166,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17004:37:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16987:54:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5169,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5157,
                              "src": "17059:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 5170,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5101,
                              "src": "17072:12:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17059:25:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d6172584445585632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 5172,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17086:45:8",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7663b65eaf935a31bb1a912e630c2c605591c5fbcbf815632e32f2efff39caab",
                              "typeString": "literal_string \"MarXDEXV2Router: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 5168,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "17051:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5173,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17051:81:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5174,
                      "nodeType": "ExpressionStatement",
                      "src": "17051:81:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5179,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5157,
                            "src": "17163:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5176,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3273,
                                "src": "17148:4:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 5175,
                              "name": "IWETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6700,
                              "src": "17142:5:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWETH_$6700_$",
                                "typeString": "type(contract IWETH)"
                              }
                            },
                            "id": 5177,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17142:11:8",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$6700",
                              "typeString": "contract IWETH"
                            }
                          },
                          "id": 5178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6699,
                          "src": "17142:20:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256) external"
                          }
                        },
                        "id": 5180,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17142:31:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5181,
                      "nodeType": "ExpressionStatement",
                      "src": "17142:31:8"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5185,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5106,
                            "src": "17214:2:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5186,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5157,
                            "src": "17218:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5182,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "17183:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 5184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1489,
                          "src": "17183:30:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 5187,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17183:45:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5188,
                      "nodeType": "ExpressionStatement",
                      "src": "17183:45:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "791ac947",
                "id": 5190,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5112,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5108,
                        "src": "16670:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 5113,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 5111,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3287,
                      "src": "16663:6:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "16663:16:8"
                  }
                ],
                "name": "swapExactTokensForETHSupportingFeeOnTransferTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 5110,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "16646:8:8"
                },
                "parameters": {
                  "id": 5109,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5099,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5190,
                      "src": "16482:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5098,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16482:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5101,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5190,
                      "src": "16505:17:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5100,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16505:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5104,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5190,
                      "src": "16532:23:8",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5102,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16532:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5103,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "16532:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5106,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5190,
                      "src": "16565:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5105,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "16565:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5108,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5190,
                      "src": "16585:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5107,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16585:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "16472:132:8"
                },
                "returnParameters": {
                  "id": 5114,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "16684:0:8"
                },
                "scope": 5291,
                "src": "16413:822:8",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  6547
                ],
                "body": {
                  "id": 5209,
                  "nodeType": "Block",
                  "src": "17387:75:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5204,
                            "name": "amountA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5192,
                            "src": "17427:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5205,
                            "name": "reserveA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5194,
                            "src": "17436:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5206,
                            "name": "reserveB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5196,
                            "src": "17446:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5202,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "17404:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 5203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "quote",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6885,
                          "src": "17404:22:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 5207,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17404:51:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 5201,
                      "id": 5208,
                      "nodeType": "Return",
                      "src": "17397:58:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "ad615dec",
                "id": 5210,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "quote",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 5198,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "17355:8:8"
                },
                "parameters": {
                  "id": 5197,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5192,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5210,
                      "src": "17291:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5191,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17291:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5194,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5210,
                      "src": "17305:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5193,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17305:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5196,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5210,
                      "src": "17320:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5195,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17320:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "17290:44:8"
                },
                "returnParameters": {
                  "id": 5201,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5200,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5210,
                      "src": "17373:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5199,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17373:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "17372:14:8"
                },
                "scope": 5291,
                "src": "17276:186:8",
                "stateMutability": "pure",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6558
                ],
                "body": {
                  "id": 5229,
                  "nodeType": "Block",
                  "src": "17636:86:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5224,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5212,
                            "src": "17683:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5225,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5214,
                            "src": "17693:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5226,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5216,
                            "src": "17704:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5222,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "17653:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 5223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountOut",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6945,
                          "src": "17653:29:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 5227,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17653:62:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 5221,
                      "id": 5228,
                      "nodeType": "Return",
                      "src": "17646:69:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "054d50d4",
                "id": 5230,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountOut",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 5218,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "17590:8:8"
                },
                "parameters": {
                  "id": 5217,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5212,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5230,
                      "src": "17490:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5211,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17490:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5214,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5230,
                      "src": "17505:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5213,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17505:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5216,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5230,
                      "src": "17521:15:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5215,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17521:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "17489:48:8"
                },
                "returnParameters": {
                  "id": 5221,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5220,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5230,
                      "src": "17616:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5219,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17616:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "17615:16:8"
                },
                "scope": 5291,
                "src": "17468:254:8",
                "stateMutability": "pure",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6569
                ],
                "body": {
                  "id": 5249,
                  "nodeType": "Block",
                  "src": "17895:86:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5244,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5232,
                            "src": "17941:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5245,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5234,
                            "src": "17952:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5246,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5236,
                            "src": "17963:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5242,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "17912:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 5243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountIn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7005,
                          "src": "17912:28:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 5247,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17912:62:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 5241,
                      "id": 5248,
                      "nodeType": "Return",
                      "src": "17905:69:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "85f8c259",
                "id": 5250,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountIn",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 5238,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "17850:8:8"
                },
                "parameters": {
                  "id": 5237,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5232,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5250,
                      "src": "17749:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5231,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17749:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5234,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5250,
                      "src": "17765:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5233,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17765:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5236,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5250,
                      "src": "17781:15:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5235,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17781:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "17748:49:8"
                },
                "returnParameters": {
                  "id": 5241,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5240,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5250,
                      "src": "17876:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5239,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17876:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "17875:15:8"
                },
                "scope": 5291,
                "src": "17728:253:8",
                "stateMutability": "pure",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6580
                ],
                "body": {
                  "id": 5269,
                  "nodeType": "Block",
                  "src": "18153:79:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5264,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3270,
                            "src": "18201:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5265,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5252,
                            "src": "18210:8:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5266,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5255,
                            "src": "18220:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5262,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "18170:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 5263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountsOut",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7086,
                          "src": "18170:30:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                          }
                        },
                        "id": 5267,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18170:55:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "functionReturnParameters": 5261,
                      "id": 5268,
                      "nodeType": "Return",
                      "src": "18163:62:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d06ca61f",
                "id": 5270,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountsOut",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 5257,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "18100:8:8"
                },
                "parameters": {
                  "id": 5256,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5252,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5270,
                      "src": "18010:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5251,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18010:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5255,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5270,
                      "src": "18025:21:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5253,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18025:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5254,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18025:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "18009:38:8"
                },
                "returnParameters": {
                  "id": 5261,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5260,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5270,
                      "src": "18126:21:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5258,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18126:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5259,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18126:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "18125:23:8"
                },
                "scope": 5291,
                "src": "17987:245:8",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  6591
                ],
                "body": {
                  "id": 5289,
                  "nodeType": "Block",
                  "src": "18404:79:8",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5284,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3270,
                            "src": "18451:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5285,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5272,
                            "src": "18460:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5286,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5275,
                            "src": "18471:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5282,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "18421:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 5283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountsIn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7171,
                          "src": "18421:29:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (address,uint256,address[] memory) view returns (uint256[] memory)"
                          }
                        },
                        "id": 5287,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18421:55:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "functionReturnParameters": 5281,
                      "id": 5288,
                      "nodeType": "Return",
                      "src": "18414:62:8"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "1f00ca74",
                "id": 5290,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountsIn",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 5277,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "18351:8:8"
                },
                "parameters": {
                  "id": 5276,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5272,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5290,
                      "src": "18260:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5271,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18260:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5275,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5290,
                      "src": "18276:21:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5273,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18276:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5274,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18276:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "18259:39:8"
                },
                "returnParameters": {
                  "id": 5281,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5280,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5290,
                      "src": "18377:21:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5278,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18377:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5279,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18377:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "18376:23:8"
                },
                "scope": 5291,
                "src": "18238:245:8",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "public"
              }
            ],
            "scope": 5292,
            "src": "370:18115:8"
          }
        ],
        "src": "0:18486:8"
      }
    },
    "contracts/examples/ExampleComputeLiquidityValue.sol": {
      "id": 9,
      "AST": {
        "absolutePath": "contracts/examples/ExampleComputeLiquidityValue.sol",
        "exportedSymbols": {
          "ExampleComputeLiquidityValue": [
            5426
          ]
        },
        "id": 5427,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 5293,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".6"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:23:9"
          },
          {
            "absolutePath": "contracts/libraries/MarXDEXV2LiquidityMathLibrary.sol",
            "file": "../libraries/MarXDEXV2LiquidityMathLibrary.sol",
            "id": 5294,
            "nodeType": "ImportDirective",
            "scope": 5427,
            "sourceUnit": 7639,
            "src": "25:56:9",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 5426,
            "linearizedBaseContracts": [
              5426
            ],
            "name": "ExampleComputeLiquidityValue",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 5297,
                "libraryName": {
                  "contractScope": null,
                  "id": 5295,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 7820,
                  "src": "133:8:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$7820",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "127:27:9",
                "typeName": {
                  "id": 5296,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "146:7:9",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "constant": false,
                "functionSelector": "c45a0155",
                "id": 5299,
                "mutability": "immutable",
                "name": "factory",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5426,
                "src": "160:32:9",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 5298,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "160:7:9",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5308,
                  "nodeType": "Block",
                  "src": "236:35:9",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5304,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5299,
                          "src": "246:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 5305,
                          "name": "factory_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5301,
                          "src": "256:8:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "246:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 5307,
                      "nodeType": "ExpressionStatement",
                      "src": "246:18:9"
                    }
                  ]
                },
                "documentation": null,
                "id": 5309,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5302,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5301,
                      "mutability": "mutable",
                      "name": "factory_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5309,
                      "src": "211:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5300,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "211:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "210:18:9"
                },
                "returnParameters": {
                  "id": 5303,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "236:0:9"
                },
                "scope": 5426,
                "src": "199:72:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5333,
                  "nodeType": "Block",
                  "src": "558:208:9",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5326,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5299,
                            "src": "644:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5327,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5311,
                            "src": "665:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5328,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5313,
                            "src": "685:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5329,
                            "name": "truePriceTokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5315,
                            "src": "705:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5330,
                            "name": "truePriceTokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5317,
                            "src": "734:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5324,
                            "name": "MarXDEXV2LiquidityMathLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7638,
                            "src": "575:29:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2LiquidityMathLibrary_$7638_$",
                              "typeString": "type(library MarXDEXV2LiquidityMathLibrary)"
                            }
                          },
                          "id": 5325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getReservesAfterArbitrage",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7371,
                          "src": "575:55:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,address,address,uint256,uint256) view returns (uint256,uint256)"
                          }
                        },
                        "id": 5331,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "575:184:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "functionReturnParameters": 5323,
                      "id": 5332,
                      "nodeType": "Return",
                      "src": "568:191:9"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "3558e94c",
                "id": 5334,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getReservesAfterArbitrage",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5318,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5311,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5334,
                      "src": "388:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5310,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "388:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5313,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5334,
                      "src": "412:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5312,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "412:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5315,
                      "mutability": "mutable",
                      "name": "truePriceTokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5334,
                      "src": "436:23:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5314,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "436:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5317,
                      "mutability": "mutable",
                      "name": "truePriceTokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5334,
                      "src": "469:23:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5316,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "469:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "378:120:9"
                },
                "returnParameters": {
                  "id": 5323,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5320,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5334,
                      "src": "522:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5319,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "522:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5322,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5334,
                      "src": "540:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5321,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "540:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "521:36:9"
                },
                "scope": 5426,
                "src": "344:422:9",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 5355,
                  "nodeType": "Block",
                  "src": "1034:171:9",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5349,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5299,
                            "src": "1112:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5350,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5336,
                            "src": "1133:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5351,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5338,
                            "src": "1153:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5352,
                            "name": "liquidityAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5340,
                            "src": "1173:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5347,
                            "name": "MarXDEXV2LiquidityMathLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7638,
                            "src": "1051:29:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2LiquidityMathLibrary_$7638_$",
                              "typeString": "type(library MarXDEXV2LiquidityMathLibrary)"
                            }
                          },
                          "id": 5348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getLiquidityValue",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7546,
                          "src": "1051:47:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,address,address,uint256) view returns (uint256,uint256)"
                          }
                        },
                        "id": 5353,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1051:147:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "functionReturnParameters": 5346,
                      "id": 5354,
                      "nodeType": "Return",
                      "src": "1044:154:9"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d9b7a6e7",
                "id": 5356,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getLiquidityValue",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5341,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5336,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5356,
                      "src": "867:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5335,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "867:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5338,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5356,
                      "src": "891:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5337,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "891:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5340,
                      "mutability": "mutable",
                      "name": "liquidityAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5356,
                      "src": "915:23:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5339,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "915:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "857:87:9"
                },
                "returnParameters": {
                  "id": 5346,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5343,
                      "mutability": "mutable",
                      "name": "tokenAAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5356,
                      "src": "977:20:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5342,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "977:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5345,
                      "mutability": "mutable",
                      "name": "tokenBAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5356,
                      "src": "1007:20:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5344,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1007:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "967:66:9"
                },
                "scope": 5426,
                "src": "831:374:9",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 5383,
                  "nodeType": "Block",
                  "src": "1581:250:9",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5375,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5299,
                            "src": "1680:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5376,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5358,
                            "src": "1701:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5377,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5360,
                            "src": "1721:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5378,
                            "name": "truePriceTokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5362,
                            "src": "1741:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5379,
                            "name": "truePriceTokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5364,
                            "src": "1770:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5380,
                            "name": "liquidityAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5366,
                            "src": "1799:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5373,
                            "name": "MarXDEXV2LiquidityMathLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7638,
                            "src": "1598:29:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2LiquidityMathLibrary_$7638_$",
                              "typeString": "type(library MarXDEXV2LiquidityMathLibrary)"
                            }
                          },
                          "id": 5374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getLiquidityValueAfterArbitrageToPrice",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7637,
                          "src": "1598:68:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,address,address,uint256,uint256,uint256) view returns (uint256,uint256)"
                          }
                        },
                        "id": 5381,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1598:226:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "functionReturnParameters": 5372,
                      "id": 5382,
                      "nodeType": "Return",
                      "src": "1591:233:9"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "69a2fcbd",
                "id": 5384,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getLiquidityValueAfterArbitrageToPrice",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5367,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5358,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5384,
                      "src": "1348:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5357,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1348:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5360,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5384,
                      "src": "1372:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5359,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1372:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5362,
                      "mutability": "mutable",
                      "name": "truePriceTokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5384,
                      "src": "1396:23:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5361,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1396:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5364,
                      "mutability": "mutable",
                      "name": "truePriceTokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5384,
                      "src": "1429:23:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5363,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1429:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5366,
                      "mutability": "mutable",
                      "name": "liquidityAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5384,
                      "src": "1462:23:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5365,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1462:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1338:153:9"
                },
                "returnParameters": {
                  "id": 5372,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5369,
                      "mutability": "mutable",
                      "name": "tokenAAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5384,
                      "src": "1524:20:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5368,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1524:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5371,
                      "mutability": "mutable",
                      "name": "tokenBAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5384,
                      "src": "1554:20:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5370,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1554:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1514:66:9"
                },
                "scope": 5426,
                "src": "1291:540:9",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 5424,
                  "nodeType": "Block",
                  "src": "2163:351:9",
                  "statements": [
                    {
                      "assignments": [
                        5400
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5400,
                          "mutability": "mutable",
                          "name": "gasBefore",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5424,
                          "src": "2173:14:9",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5399,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2173:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5403,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5401,
                          "name": "gasleft",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -7,
                          "src": "2190:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 5402,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2190:9:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2173:26:9"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5407,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5299,
                            "src": "2291:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5408,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5386,
                            "src": "2312:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5409,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5388,
                            "src": "2332:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5410,
                            "name": "truePriceTokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5390,
                            "src": "2352:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5411,
                            "name": "truePriceTokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5392,
                            "src": "2381:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5412,
                            "name": "liquidityAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5394,
                            "src": "2410:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5404,
                            "name": "MarXDEXV2LiquidityMathLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7638,
                            "src": "2209:29:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2LiquidityMathLibrary_$7638_$",
                              "typeString": "type(library MarXDEXV2LiquidityMathLibrary)"
                            }
                          },
                          "id": 5406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getLiquidityValueAfterArbitrageToPrice",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7637,
                          "src": "2209:68:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,address,address,uint256,uint256,uint256) view returns (uint256,uint256)"
                          }
                        },
                        "id": 5413,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2209:226:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "id": 5414,
                      "nodeType": "ExpressionStatement",
                      "src": "2209:226:9"
                    },
                    {
                      "assignments": [
                        5416
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5416,
                          "mutability": "mutable",
                          "name": "gasAfter",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5424,
                          "src": "2445:13:9",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5415,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2445:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5419,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 5417,
                          "name": "gasleft",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -7,
                          "src": "2461:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 5418,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2461:9:9",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2445:25:9"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5422,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5420,
                          "name": "gasBefore",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5400,
                          "src": "2487:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5421,
                          "name": "gasAfter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5416,
                          "src": "2499:8:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2487:20:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 5398,
                      "id": 5423,
                      "nodeType": "Return",
                      "src": "2480:27:9"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "80caa353",
                "id": 5425,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getGasCostOfGetLiquidityValueAfterArbitrageToPrice",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5395,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5386,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5425,
                      "src": "1973:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5385,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1973:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5388,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5425,
                      "src": "1997:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5387,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1997:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5390,
                      "mutability": "mutable",
                      "name": "truePriceTokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5425,
                      "src": "2021:23:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5389,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2021:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5392,
                      "mutability": "mutable",
                      "name": "truePriceTokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5425,
                      "src": "2054:23:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5391,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2054:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5394,
                      "mutability": "mutable",
                      "name": "liquidityAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5425,
                      "src": "2087:23:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5393,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2087:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1963:153:9"
                },
                "returnParameters": {
                  "id": 5398,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5397,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5425,
                      "src": "2149:7:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5396,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2149:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2139:23:9"
                },
                "scope": 5426,
                "src": "1904:610:9",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 5427,
            "src": "83:2433:9"
          }
        ],
        "src": "0:2517:9"
      }
    },
    "contracts/examples/ExampleOracleSimple.sol": {
      "id": 10,
      "AST": {
        "absolutePath": "contracts/examples/ExampleOracleSimple.sol",
        "exportedSymbols": {
          "ExampleOracleSimple": [
            5644
          ]
        },
        "id": 5645,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 5428,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".6"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:23:10"
          },
          {
            "absolutePath": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Factory.sol",
            "file": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Factory.sol",
            "id": 5429,
            "nodeType": "ImportDirective",
            "scope": 5645,
            "sourceUnit": 1554,
            "src": "25:79:10",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Pair.sol",
            "file": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Pair.sol",
            "id": 5430,
            "nodeType": "ImportDirective",
            "scope": 5645,
            "sourceUnit": 1796,
            "src": "105:76:10",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/FixedPoint.sol",
            "file": "@marx-dex/marx-dex-lib/contracts/libraries/FixedPoint.sol",
            "id": 5431,
            "nodeType": "ImportDirective",
            "scope": 5645,
            "sourceUnit": 1110,
            "src": "182:67:10",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/MarXDEXV2OracleLibrary.sol",
            "file": "../libraries/MarXDEXV2OracleLibrary.sol",
            "id": 5432,
            "nodeType": "ImportDirective",
            "scope": 5645,
            "sourceUnit": 7746,
            "src": "251:49:10",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/MarXDEXV2Library.sol",
            "file": "../libraries/MarXDEXV2Library.sol",
            "id": 5433,
            "nodeType": "ImportDirective",
            "scope": 5645,
            "sourceUnit": 7173,
            "src": "301:43:10",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 5644,
            "linearizedBaseContracts": [
              5644
            ],
            "name": "ExampleOracleSimple",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 5435,
                "libraryName": {
                  "contractScope": null,
                  "id": 5434,
                  "name": "FixedPoint",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1109,
                  "src": "596:10:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FixedPoint_$1109",
                    "typeString": "library FixedPoint"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "590:23:10",
                "typeName": null
              },
              {
                "constant": true,
                "functionSelector": "b4d1d795",
                "id": 5438,
                "mutability": "constant",
                "name": "PERIOD",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5644,
                "src": "619:38:10",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5436,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "619:4:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3234",
                  "id": 5437,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "649:8:10",
                  "subdenomination": "hours",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_86400_by_1",
                    "typeString": "int_const 86400"
                  },
                  "value": "24"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 5440,
                "mutability": "immutable",
                "name": "pair",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5644,
                "src": "664:29:10",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                  "typeString": "contract IMarXDEXV2Pair"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 5439,
                  "name": "IMarXDEXV2Pair",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1795,
                  "src": "664:14:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                    "typeString": "contract IMarXDEXV2Pair"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "functionSelector": "0dfe1681",
                "id": 5442,
                "mutability": "immutable",
                "name": "token0",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5644,
                "src": "699:31:10",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 5441,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "699:7:10",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "d21220a7",
                "id": 5444,
                "mutability": "immutable",
                "name": "token1",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5644,
                "src": "736:31:10",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 5443,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "736:7:10",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "5909c0d5",
                "id": 5446,
                "mutability": "mutable",
                "name": "price0CumulativeLast",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5644,
                "src": "774:35:10",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5445,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "774:4:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "5a3d5493",
                "id": 5448,
                "mutability": "mutable",
                "name": "price1CumulativeLast",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5644,
                "src": "815:35:10",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5447,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "815:4:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "c5700a02",
                "id": 5450,
                "mutability": "mutable",
                "name": "blockTimestampLast",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5644,
                "src": "856:33:10",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                },
                "typeName": {
                  "id": 5449,
                  "name": "uint32",
                  "nodeType": "ElementaryTypeName",
                  "src": "856:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "a6bb4539",
                "id": 5452,
                "mutability": "mutable",
                "name": "price0Average",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5644,
                "src": "895:41:10",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_uq112x112_$488_storage",
                  "typeString": "struct FixedPoint.uq112x112"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 5451,
                  "name": "FixedPoint.uq112x112",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 488,
                  "src": "895:20:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                    "typeString": "struct FixedPoint.uq112x112"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "5e6aaf2c",
                "id": 5454,
                "mutability": "mutable",
                "name": "price1Average",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5644,
                "src": "942:41:10",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_uq112x112_$488_storage",
                  "typeString": "struct FixedPoint.uq112x112"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 5453,
                  "name": "FixedPoint.uq112x112",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 488,
                  "src": "942:20:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                    "typeString": "struct FixedPoint.uq112x112"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5528,
                  "nodeType": "Block",
                  "src": "1058:675:10",
                  "statements": [
                    {
                      "assignments": [
                        5464
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5464,
                          "mutability": "mutable",
                          "name": "_pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5528,
                          "src": "1068:20:10",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                            "typeString": "contract IMarXDEXV2Pair"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 5463,
                            "name": "IMarXDEXV2Pair",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 1795,
                            "src": "1068:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                              "typeString": "contract IMarXDEXV2Pair"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5473,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5468,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5456,
                                "src": "1131:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 5469,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5458,
                                "src": "1140:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 5470,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5460,
                                "src": "1148:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 5466,
                                "name": "MarXDEXV2Library",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7172,
                                "src": "1106:16:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                  "typeString": "type(library MarXDEXV2Library)"
                                }
                              },
                              "id": 5467,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6796,
                              "src": "1106:24:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 5471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1106:49:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 5465,
                          "name": "IMarXDEXV2Pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1795,
                          "src": "1091:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                            "typeString": "type(contract IMarXDEXV2Pair)"
                          }
                        },
                        "id": 5472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1091:65:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                          "typeString": "contract IMarXDEXV2Pair"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1068:88:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5474,
                          "name": "pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5440,
                          "src": "1166:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                            "typeString": "contract IMarXDEXV2Pair"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 5475,
                          "name": "_pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5464,
                          "src": "1173:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                            "typeString": "contract IMarXDEXV2Pair"
                          }
                        },
                        "src": "1166:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                          "typeString": "contract IMarXDEXV2Pair"
                        }
                      },
                      "id": 5477,
                      "nodeType": "ExpressionStatement",
                      "src": "1166:12:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5482,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5478,
                          "name": "token0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5442,
                          "src": "1188:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5479,
                              "name": "_pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5464,
                              "src": "1197:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                "typeString": "contract IMarXDEXV2Pair"
                              }
                            },
                            "id": 5480,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1723,
                            "src": "1197:12:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 5481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1197:14:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1188:23:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 5483,
                      "nodeType": "ExpressionStatement",
                      "src": "1188:23:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5484,
                          "name": "token1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5444,
                          "src": "1221:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5485,
                              "name": "_pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5464,
                              "src": "1230:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                "typeString": "contract IMarXDEXV2Pair"
                              }
                            },
                            "id": 5486,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1728,
                            "src": "1230:12:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 5487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1230:14:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1221:23:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 5489,
                      "nodeType": "ExpressionStatement",
                      "src": "1221:23:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5494,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5490,
                          "name": "price0CumulativeLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5446,
                          "src": "1254:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5491,
                              "name": "_pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5464,
                              "src": "1277:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                "typeString": "contract IMarXDEXV2Pair"
                              }
                            },
                            "id": 5492,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "price0CumulativeLast",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1742,
                            "src": "1277:26:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 5493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1277:28:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1254:51:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5495,
                      "nodeType": "ExpressionStatement",
                      "src": "1254:51:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5500,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5496,
                          "name": "price1CumulativeLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5448,
                          "src": "1368:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5497,
                              "name": "_pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5464,
                              "src": "1391:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                "typeString": "contract IMarXDEXV2Pair"
                              }
                            },
                            "id": 5498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "price1CumulativeLast",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1747,
                            "src": "1391:26:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 5499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1391:28:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1368:51:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5501,
                      "nodeType": "ExpressionStatement",
                      "src": "1368:51:10"
                    },
                    {
                      "assignments": [
                        5503
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5503,
                          "mutability": "mutable",
                          "name": "reserve0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5528,
                          "src": "1482:16:10",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 5502,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "1482:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5504,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1482:16:10"
                    },
                    {
                      "assignments": [
                        5506
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5506,
                          "mutability": "mutable",
                          "name": "reserve1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5528,
                          "src": "1508:16:10",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 5505,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "1508:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5507,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1508:16:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 5508,
                              "name": "reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5503,
                              "src": "1535:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5509,
                              "name": "reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5506,
                              "src": "1545:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5510,
                              "name": "blockTimestampLast",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5450,
                              "src": "1555:18:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "id": 5511,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "1534:40:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5512,
                              "name": "_pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5464,
                              "src": "1577:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                "typeString": "contract IMarXDEXV2Pair"
                              }
                            },
                            "id": 5513,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserves",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1737,
                            "src": "1577:17:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view external returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 5514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1577:19:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "src": "1534:62:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5516,
                      "nodeType": "ExpressionStatement",
                      "src": "1534:62:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 5524,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              "id": 5520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5518,
                                "name": "reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5503,
                                "src": "1614:8:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1626:1:10",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1614:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              "id": 5523,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5521,
                                "name": "reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5506,
                                "src": "1631:8:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5522,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1643:1:10",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1631:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1614:30:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4578616d706c654f7261636c6553696d706c653a204e4f5f5245534552564553",
                            "id": 5525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1646:34:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5720adcb94cda19986281480d9844baedfdd42c24b3723a822a393a0fc529ea4",
                              "typeString": "literal_string \"ExampleOracleSimple: NO_RESERVES\""
                            },
                            "value": "ExampleOracleSimple: NO_RESERVES"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_5720adcb94cda19986281480d9844baedfdd42c24b3723a822a393a0fc529ea4",
                              "typeString": "literal_string \"ExampleOracleSimple: NO_RESERVES\""
                            }
                          ],
                          "id": 5517,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1606:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5526,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1606:75:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5527,
                      "nodeType": "ExpressionStatement",
                      "src": "1606:75:10"
                    }
                  ]
                },
                "documentation": null,
                "id": 5529,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5461,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5456,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5529,
                      "src": "1002:15:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5455,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1002:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5458,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5529,
                      "src": "1019:14:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5457,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1019:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5460,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5529,
                      "src": "1035:14:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5459,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1035:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1001:49:10"
                },
                "returnParameters": {
                  "id": 5462,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1058:0:10"
                },
                "scope": 5644,
                "src": "990:743:10",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5601,
                  "nodeType": "Block",
                  "src": "1766:961:10",
                  "statements": [
                    {
                      "assignments": [
                        5533,
                        5535,
                        5537
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5533,
                          "mutability": "mutable",
                          "name": "price0Cumulative",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5601,
                          "src": "1777:21:10",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5532,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1777:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 5535,
                          "mutability": "mutable",
                          "name": "price1Cumulative",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5601,
                          "src": "1800:21:10",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5534,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1800:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 5537,
                          "mutability": "mutable",
                          "name": "blockTimestamp",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5601,
                          "src": "1823:21:10",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 5536,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "1823:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5545,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5542,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5440,
                                "src": "1915:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                  "typeString": "contract IMarXDEXV2Pair"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                  "typeString": "contract IMarXDEXV2Pair"
                                }
                              ],
                              "id": 5541,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1907:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5540,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1907:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5543,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1907:13:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5538,
                            "name": "MarXDEXV2OracleLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7745,
                            "src": "1860:22:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2OracleLibrary_$7745_$",
                              "typeString": "type(library MarXDEXV2OracleLibrary)"
                            }
                          },
                          "id": 5539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "currentCumulativePrices",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7744,
                          "src": "1860:46:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint32_$",
                            "typeString": "function (address) view returns (uint256,uint256,uint32)"
                          }
                        },
                        "id": 5544,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1860:61:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint32_$",
                          "typeString": "tuple(uint256,uint256,uint32)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1776:145:10"
                    },
                    {
                      "assignments": [
                        5547
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5547,
                          "mutability": "mutable",
                          "name": "timeElapsed",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5601,
                          "src": "1931:18:10",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 5546,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "1931:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5551,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 5550,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5548,
                          "name": "blockTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5537,
                          "src": "1952:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5549,
                          "name": "blockTimestampLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5450,
                          "src": "1969:18:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "1952:35:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1931:56:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5555,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5553,
                              "name": "timeElapsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5547,
                              "src": "2110:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 5554,
                              "name": "PERIOD",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5438,
                              "src": "2125:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2110:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4578616d706c654f7261636c6553696d706c653a20504552494f445f4e4f545f454c4150534544",
                            "id": 5556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2133:41:10",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a1aff5acc9ffd9e80f19a58282d38e76d2d603685c69fc94919da1d1b8a042bb",
                              "typeString": "literal_string \"ExampleOracleSimple: PERIOD_NOT_ELAPSED\""
                            },
                            "value": "ExampleOracleSimple: PERIOD_NOT_ELAPSED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_a1aff5acc9ffd9e80f19a58282d38e76d2d603685c69fc94919da1d1b8a042bb",
                              "typeString": "literal_string \"ExampleOracleSimple: PERIOD_NOT_ELAPSED\""
                            }
                          ],
                          "id": 5552,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2102:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5557,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2102:73:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5558,
                      "nodeType": "ExpressionStatement",
                      "src": "2102:73:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5559,
                          "name": "price0Average",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5452,
                          "src": "2362:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_uq112x112_$488_storage",
                            "typeString": "struct FixedPoint.uq112x112 storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5569,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 5566,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 5564,
                                          "name": "price0Cumulative",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5533,
                                          "src": "2408:16:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 5565,
                                          "name": "price0CumulativeLast",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5446,
                                          "src": "2427:20:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "2408:39:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 5567,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2407:41:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 5568,
                                    "name": "timeElapsed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5547,
                                    "src": "2451:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "src": "2407:55:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 5563,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2399:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint224_$",
                                  "typeString": "type(uint224)"
                                },
                                "typeName": {
                                  "id": 5562,
                                  "name": "uint224",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2399:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 5570,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2399:64:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5560,
                              "name": "FixedPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1109,
                              "src": "2378:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1109_$",
                                "typeString": "type(library FixedPoint)"
                              }
                            },
                            "id": 5561,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "uq112x112",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 488,
                            "src": "2378:20:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_uq112x112_$488_storage_ptr_$",
                              "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                            }
                          },
                          "id": 5571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2378:86:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                            "typeString": "struct FixedPoint.uq112x112 memory"
                          }
                        },
                        "src": "2362:102:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage",
                          "typeString": "struct FixedPoint.uq112x112 storage ref"
                        }
                      },
                      "id": 5573,
                      "nodeType": "ExpressionStatement",
                      "src": "2362:102:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5587,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5574,
                          "name": "price1Average",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5454,
                          "src": "2474:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_uq112x112_$488_storage",
                            "typeString": "struct FixedPoint.uq112x112 storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5584,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 5581,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 5579,
                                          "name": "price1Cumulative",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5535,
                                          "src": "2520:16:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 5580,
                                          "name": "price1CumulativeLast",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5448,
                                          "src": "2539:20:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "2520:39:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 5582,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2519:41:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 5583,
                                    "name": "timeElapsed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5547,
                                    "src": "2563:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "src": "2519:55:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 5578,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2511:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint224_$",
                                  "typeString": "type(uint224)"
                                },
                                "typeName": {
                                  "id": 5577,
                                  "name": "uint224",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2511:7:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 5585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2511:64:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5575,
                              "name": "FixedPoint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1109,
                              "src": "2490:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1109_$",
                                "typeString": "type(library FixedPoint)"
                              }
                            },
                            "id": 5576,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "uq112x112",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 488,
                            "src": "2490:20:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_uq112x112_$488_storage_ptr_$",
                              "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                            }
                          },
                          "id": 5586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2490:86:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                            "typeString": "struct FixedPoint.uq112x112 memory"
                          }
                        },
                        "src": "2474:102:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_storage",
                          "typeString": "struct FixedPoint.uq112x112 storage ref"
                        }
                      },
                      "id": 5588,
                      "nodeType": "ExpressionStatement",
                      "src": "2474:102:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5589,
                          "name": "price0CumulativeLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5446,
                          "src": "2587:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 5590,
                          "name": "price0Cumulative",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5533,
                          "src": "2610:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2587:39:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5592,
                      "nodeType": "ExpressionStatement",
                      "src": "2587:39:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5595,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5593,
                          "name": "price1CumulativeLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5448,
                          "src": "2636:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 5594,
                          "name": "price1Cumulative",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5535,
                          "src": "2659:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2636:39:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5596,
                      "nodeType": "ExpressionStatement",
                      "src": "2636:39:10"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5599,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5597,
                          "name": "blockTimestampLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5450,
                          "src": "2685:18:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 5598,
                          "name": "blockTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5537,
                          "src": "2706:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "2685:35:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "id": 5600,
                      "nodeType": "ExpressionStatement",
                      "src": "2685:35:10"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a2e62045",
                "id": 5602,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "update",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5530,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1754:2:10"
                },
                "returnParameters": {
                  "id": 5531,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1766:0:10"
                },
                "scope": 5644,
                "src": "1739:988:10",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 5642,
                  "nodeType": "Block",
                  "src": "2920:271:10",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 5613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5611,
                          "name": "token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5604,
                          "src": "2934:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5612,
                          "name": "token0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5442,
                          "src": "2943:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2934:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 5640,
                        "nodeType": "Block",
                        "src": "3033:152:10",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 5627,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 5625,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5604,
                                    "src": "3055:5:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 5626,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5444,
                                    "src": "3064:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "3055:15:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "4578616d706c654f7261636c6553696d706c653a20494e56414c49445f544f4b454e",
                                  "id": 5628,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3072:36:10",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_7eac5a25019cfa58bee0665216bcc5877b01e182a14f1df6cf76155e4b2d9900",
                                    "typeString": "literal_string \"ExampleOracleSimple: INVALID_TOKEN\""
                                  },
                                  "value": "ExampleOracleSimple: INVALID_TOKEN"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_7eac5a25019cfa58bee0665216bcc5877b01e182a14f1df6cf76155e4b2d9900",
                                    "typeString": "literal_string \"ExampleOracleSimple: INVALID_TOKEN\""
                                  }
                                ],
                                "id": 5624,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "3047:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 5629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3047:62:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5630,
                            "nodeType": "ExpressionStatement",
                            "src": "3047:62:10"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5638,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 5631,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5609,
                                "src": "3123:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 5634,
                                        "name": "amountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5606,
                                        "src": "3153:8:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5632,
                                        "name": "price1Average",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5454,
                                        "src": "3135:13:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_uq112x112_$488_storage",
                                          "typeString": "struct FixedPoint.uq112x112 storage ref"
                                        }
                                      },
                                      "id": 5633,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 607,
                                      "src": "3135:17:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_struct$_uq112x112_$488_memory_ptr_$_t_uint256_$returns$_t_struct$_uq144x112_$491_memory_ptr_$bound_to$_t_struct$_uq112x112_$488_memory_ptr_$",
                                        "typeString": "function (struct FixedPoint.uq112x112 memory,uint256) pure returns (struct FixedPoint.uq144x112 memory)"
                                      }
                                    },
                                    "id": 5635,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3135:27:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_uq144x112_$491_memory_ptr",
                                      "typeString": "struct FixedPoint.uq144x112 memory"
                                    }
                                  },
                                  "id": 5636,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "decode144",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 569,
                                  "src": "3135:37:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_uq144x112_$491_memory_ptr_$returns$_t_uint144_$bound_to$_t_struct$_uq144x112_$491_memory_ptr_$",
                                    "typeString": "function (struct FixedPoint.uq144x112 memory) pure returns (uint144)"
                                  }
                                },
                                "id": 5637,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3135:39:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint144",
                                  "typeString": "uint144"
                                }
                              },
                              "src": "3123:51:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5639,
                            "nodeType": "ExpressionStatement",
                            "src": "3123:51:10"
                          }
                        ]
                      },
                      "id": 5641,
                      "nodeType": "IfStatement",
                      "src": "2930:255:10",
                      "trueBody": {
                        "id": 5623,
                        "nodeType": "Block",
                        "src": "2951:76:10",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 5614,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5609,
                                "src": "2965:9:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 5617,
                                        "name": "amountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5606,
                                        "src": "2995:8:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 5615,
                                        "name": "price0Average",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5452,
                                        "src": "2977:13:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_uq112x112_$488_storage",
                                          "typeString": "struct FixedPoint.uq112x112 storage ref"
                                        }
                                      },
                                      "id": 5616,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 607,
                                      "src": "2977:17:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_struct$_uq112x112_$488_memory_ptr_$_t_uint256_$returns$_t_struct$_uq144x112_$491_memory_ptr_$bound_to$_t_struct$_uq112x112_$488_memory_ptr_$",
                                        "typeString": "function (struct FixedPoint.uq112x112 memory,uint256) pure returns (struct FixedPoint.uq144x112 memory)"
                                      }
                                    },
                                    "id": 5618,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2977:27:10",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_uq144x112_$491_memory_ptr",
                                      "typeString": "struct FixedPoint.uq144x112 memory"
                                    }
                                  },
                                  "id": 5619,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "decode144",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 569,
                                  "src": "2977:37:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_uq144x112_$491_memory_ptr_$returns$_t_uint144_$bound_to$_t_struct$_uq144x112_$491_memory_ptr_$",
                                    "typeString": "function (struct FixedPoint.uq144x112 memory) pure returns (uint144)"
                                  }
                                },
                                "id": 5620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2977:39:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint144",
                                  "typeString": "uint144"
                                }
                              },
                              "src": "2965:51:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5622,
                            "nodeType": "ExpressionStatement",
                            "src": "2965:51:10"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "3ddac953",
                "id": 5643,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "consult",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5607,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5604,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5643,
                      "src": "2851:13:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5603,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2851:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5606,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5643,
                      "src": "2866:13:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5605,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2866:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2850:30:10"
                },
                "returnParameters": {
                  "id": 5610,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5609,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5643,
                      "src": "2904:14:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5608,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2904:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2903:16:10"
                },
                "scope": 5644,
                "src": "2834:357:10",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 5645,
            "src": "555:2638:10"
          }
        ],
        "src": "0:3194:10"
      }
    },
    "contracts/examples/ExampleSlidingWindowOracle.sol": {
      "id": 11,
      "AST": {
        "absolutePath": "contracts/examples/ExampleSlidingWindowOracle.sol",
        "exportedSymbols": {
          "ExampleSlidingWindowOracle": [
            6000
          ]
        },
        "id": 6001,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 5646,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".6"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:23:11"
          },
          {
            "absolutePath": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Factory.sol",
            "file": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Factory.sol",
            "id": 5647,
            "nodeType": "ImportDirective",
            "scope": 6001,
            "sourceUnit": 1554,
            "src": "25:79:11",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Pair.sol",
            "file": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Pair.sol",
            "id": 5648,
            "nodeType": "ImportDirective",
            "scope": 6001,
            "sourceUnit": 1796,
            "src": "105:76:11",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/FixedPoint.sol",
            "file": "@marx-dex/marx-dex-lib/contracts/libraries/FixedPoint.sol",
            "id": 5649,
            "nodeType": "ImportDirective",
            "scope": 6001,
            "sourceUnit": 1110,
            "src": "182:67:11",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/SafeMath.sol",
            "file": "../libraries/SafeMath.sol",
            "id": 5650,
            "nodeType": "ImportDirective",
            "scope": 6001,
            "sourceUnit": 7821,
            "src": "251:35:11",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/MarXDEXV2Library.sol",
            "file": "../libraries/MarXDEXV2Library.sol",
            "id": 5651,
            "nodeType": "ImportDirective",
            "scope": 6001,
            "sourceUnit": 7173,
            "src": "287:43:11",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/MarXDEXV2OracleLibrary.sol",
            "file": "../libraries/MarXDEXV2OracleLibrary.sol",
            "id": 5652,
            "nodeType": "ImportDirective",
            "scope": 6001,
            "sourceUnit": 7746,
            "src": "331:49:11",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 6000,
            "linearizedBaseContracts": [
              6000
            ],
            "name": "ExampleSlidingWindowOracle",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 5654,
                "libraryName": {
                  "contractScope": null,
                  "id": 5653,
                  "name": "FixedPoint",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1109,
                  "src": "782:10:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FixedPoint_$1109",
                    "typeString": "library FixedPoint"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "776:23:11",
                "typeName": null
              },
              {
                "id": 5657,
                "libraryName": {
                  "contractScope": null,
                  "id": 5655,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 7820,
                  "src": "810:8:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$7820",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "804:24:11",
                "typeName": {
                  "id": 5656,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "823:4:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "canonicalName": "ExampleSlidingWindowOracle.Observation",
                "id": 5664,
                "members": [
                  {
                    "constant": false,
                    "id": 5659,
                    "mutability": "mutable",
                    "name": "timestamp",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 5664,
                    "src": "863:14:11",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 5658,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "863:4:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5661,
                    "mutability": "mutable",
                    "name": "price0Cumulative",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 5664,
                    "src": "887:21:11",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 5660,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "887:4:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 5663,
                    "mutability": "mutable",
                    "name": "price1Cumulative",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 5664,
                    "src": "918:21:11",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 5662,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "918:4:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "Observation",
                "nodeType": "StructDefinition",
                "scope": 6000,
                "src": "834:112:11",
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "c45a0155",
                "id": 5666,
                "mutability": "immutable",
                "name": "factory",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 6000,
                "src": "952:32:11",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 5665,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "952:7:11",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "8a14117a",
                "id": 5668,
                "mutability": "immutable",
                "name": "windowSize",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 6000,
                "src": "1088:32:11",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5667,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "1088:4:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "556f0dc7",
                "id": 5670,
                "mutability": "immutable",
                "name": "granularity",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 6000,
                "src": "1673:34:11",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 5669,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1673:5:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "e4463eb2",
                "id": 5672,
                "mutability": "immutable",
                "name": "periodSize",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 6000,
                "src": "1824:32:11",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5671,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "1824:4:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "bfcc8e42",
                "id": 5677,
                "mutability": "mutable",
                "name": "pairObservations",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 6000,
                "src": "1941:57:11",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_Observation_$5664_storage_$dyn_storage_$",
                  "typeString": "mapping(address => struct ExampleSlidingWindowOracle.Observation[])"
                },
                "typeName": {
                  "id": 5676,
                  "keyType": {
                    "id": 5673,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1949:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1941:33:11",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_Observation_$5664_storage_$dyn_storage_$",
                    "typeString": "mapping(address => struct ExampleSlidingWindowOracle.Observation[])"
                  },
                  "valueType": {
                    "baseType": {
                      "contractScope": null,
                      "id": 5674,
                      "name": "Observation",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 5664,
                      "src": "1960:11:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                        "typeString": "struct ExampleSlidingWindowOracle.Observation"
                      }
                    },
                    "id": 5675,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1960:13:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Observation_$5664_storage_$dyn_storage_ptr",
                      "typeString": "struct ExampleSlidingWindowOracle.Observation[]"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5719,
                  "nodeType": "Block",
                  "src": "2080:352:11",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 5689,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5687,
                              "name": "granularity_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5683,
                              "src": "2098:12:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 5688,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2113:1:11",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "2098:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "536c6964696e6757696e646f774f7261636c653a204752414e554c4152495459",
                            "id": 5690,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2116:34:11",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4475cb61de8f40ee5fa28e004a27a375037aa82af6dab1e7a7b1e55ef8e63c7f",
                              "typeString": "literal_string \"SlidingWindowOracle: GRANULARITY\""
                            },
                            "value": "SlidingWindowOracle: GRANULARITY"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4475cb61de8f40ee5fa28e004a27a375037aa82af6dab1e7a7b1e55ef8e63c7f",
                              "typeString": "literal_string \"SlidingWindowOracle: GRANULARITY\""
                            }
                          ],
                          "id": 5686,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2090:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5691,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2090:61:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5692,
                      "nodeType": "ExpressionStatement",
                      "src": "2090:61:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5703,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5701,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5698,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 5694,
                                      "name": "periodSize",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5672,
                                      "src": "2183:10:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 5697,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 5695,
                                        "name": "windowSize_",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5681,
                                        "src": "2196:11:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 5696,
                                        "name": "granularity_",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5683,
                                        "src": "2210:12:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "src": "2196:26:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2183:39:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 5699,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2182:41:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 5700,
                                "name": "granularity_",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5683,
                                "src": "2226:12:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "2182:56:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 5702,
                              "name": "windowSize_",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5681,
                              "src": "2242:11:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2182:71:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "536c6964696e6757696e646f774f7261636c653a2057494e444f575f4e4f545f4556454e4c595f444956495349424c45",
                            "id": 5704,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2267:50:11",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_02fab66c5c104e9faa12a43c836254d05ef50c6df22c7a6bbf78f99052bb8397",
                              "typeString": "literal_string \"SlidingWindowOracle: WINDOW_NOT_EVENLY_DIVISIBLE\""
                            },
                            "value": "SlidingWindowOracle: WINDOW_NOT_EVENLY_DIVISIBLE"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_02fab66c5c104e9faa12a43c836254d05ef50c6df22c7a6bbf78f99052bb8397",
                              "typeString": "literal_string \"SlidingWindowOracle: WINDOW_NOT_EVENLY_DIVISIBLE\""
                            }
                          ],
                          "id": 5693,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2161:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2161:166:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5706,
                      "nodeType": "ExpressionStatement",
                      "src": "2161:166:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5709,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5707,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5666,
                          "src": "2337:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 5708,
                          "name": "factory_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5679,
                          "src": "2347:8:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2337:18:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 5710,
                      "nodeType": "ExpressionStatement",
                      "src": "2337:18:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5713,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5711,
                          "name": "windowSize",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5668,
                          "src": "2365:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 5712,
                          "name": "windowSize_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5681,
                          "src": "2378:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2365:24:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5714,
                      "nodeType": "ExpressionStatement",
                      "src": "2365:24:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5717,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5715,
                          "name": "granularity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5670,
                          "src": "2399:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 5716,
                          "name": "granularity_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5683,
                          "src": "2413:12:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "2399:26:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "id": 5718,
                      "nodeType": "ExpressionStatement",
                      "src": "2399:26:11"
                    }
                  ]
                },
                "documentation": null,
                "id": 5720,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5684,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5679,
                      "mutability": "mutable",
                      "name": "factory_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5720,
                      "src": "2017:16:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5678,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2017:7:11",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5681,
                      "mutability": "mutable",
                      "name": "windowSize_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5720,
                      "src": "2035:16:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5680,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2035:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5683,
                      "mutability": "mutable",
                      "name": "granularity_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5720,
                      "src": "2053:18:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 5682,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "2053:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2016:56:11"
                },
                "returnParameters": {
                  "id": 5685,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2080:0:11"
                },
                "scope": 6000,
                "src": "2005:427:11",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5740,
                  "nodeType": "Block",
                  "src": "2597:107:11",
                  "statements": [
                    {
                      "assignments": [
                        5728
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5728,
                          "mutability": "mutable",
                          "name": "epochPeriod",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5740,
                          "src": "2607:16:11",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5727,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2607:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5732,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5731,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5729,
                          "name": "timestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5722,
                          "src": "2626:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5730,
                          "name": "periodSize",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5672,
                          "src": "2638:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2626:22:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2607:41:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5737,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5735,
                              "name": "epochPeriod",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5728,
                              "src": "2671:11:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 5736,
                              "name": "granularity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5670,
                              "src": "2685:11:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "2671:25:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2665:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint8_$",
                            "typeString": "type(uint8)"
                          },
                          "typeName": {
                            "id": 5733,
                            "name": "uint8",
                            "nodeType": "ElementaryTypeName",
                            "src": "2665:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 5738,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2665:32:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "functionReturnParameters": 5726,
                      "id": 5739,
                      "nodeType": "Return",
                      "src": "2658:39:11"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "dbaad32f",
                "id": 5741,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "observationIndexOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5723,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5722,
                      "mutability": "mutable",
                      "name": "timestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5741,
                      "src": "2547:14:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5721,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2547:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2546:16:11"
                },
                "returnParameters": {
                  "id": 5726,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5725,
                      "mutability": "mutable",
                      "name": "index",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5741,
                      "src": "2584:11:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 5724,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "2584:5:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2583:13:11"
                },
                "scope": 6000,
                "src": "2519:185:11",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 5772,
                  "nodeType": "Block",
                  "src": "2936:314:11",
                  "statements": [
                    {
                      "assignments": [
                        5749
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5749,
                          "mutability": "mutable",
                          "name": "observationIndex",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5772,
                          "src": "2946:22:11",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "typeName": {
                            "id": 5748,
                            "name": "uint8",
                            "nodeType": "ElementaryTypeName",
                            "src": "2946:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5754,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5751,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "2990:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 5752,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2990:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5750,
                          "name": "observationIndexOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5741,
                          "src": "2971:18:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint8_$",
                            "typeString": "function (uint256) view returns (uint8)"
                          }
                        },
                        "id": 5753,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2971:35:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2946:60:11"
                    },
                    {
                      "assignments": [
                        5756
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5756,
                          "mutability": "mutable",
                          "name": "firstObservationIndex",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5772,
                          "src": "3103:27:11",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "typeName": {
                            "id": 5755,
                            "name": "uint8",
                            "nodeType": "ElementaryTypeName",
                            "src": "3103:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5763,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 5762,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 5759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5757,
                                "name": "observationIndex",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5749,
                                "src": "3134:16:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 5758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3153:1:11",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "3134:20:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "id": 5760,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3133:22:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "%",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5761,
                          "name": "granularity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5670,
                          "src": "3158:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "3133:36:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3103:66:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5770,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5764,
                          "name": "firstObservation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5746,
                          "src": "3179:16:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                            "typeString": "struct ExampleSlidingWindowOracle.Observation storage pointer"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5765,
                              "name": "pairObservations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5677,
                              "src": "3198:16:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_Observation_$5664_storage_$dyn_storage_$",
                                "typeString": "mapping(address => struct ExampleSlidingWindowOracle.Observation storage ref[] storage ref)"
                              }
                            },
                            "id": 5767,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5766,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5743,
                              "src": "3215:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3198:22:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Observation_$5664_storage_$dyn_storage",
                              "typeString": "struct ExampleSlidingWindowOracle.Observation storage ref[] storage ref"
                            }
                          },
                          "id": 5769,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5768,
                            "name": "firstObservationIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5756,
                            "src": "3221:21:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3198:45:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Observation_$5664_storage",
                            "typeString": "struct ExampleSlidingWindowOracle.Observation storage ref"
                          }
                        },
                        "src": "3179:64:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                          "typeString": "struct ExampleSlidingWindowOracle.Observation storage pointer"
                        }
                      },
                      "id": 5771,
                      "nodeType": "ExpressionStatement",
                      "src": "3179:64:11"
                    }
                  ]
                },
                "documentation": null,
                "id": 5773,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getFirstObservationInWindow",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5744,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5743,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5773,
                      "src": "2862:12:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5742,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2862:7:11",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2861:14:11"
                },
                "returnParameters": {
                  "id": 5747,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5746,
                      "mutability": "mutable",
                      "name": "firstObservation",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5773,
                      "src": "2898:36:11",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                        "typeString": "struct ExampleSlidingWindowOracle.Observation"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5745,
                        "name": "Observation",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5664,
                        "src": "2898:11:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                          "typeString": "struct ExampleSlidingWindowOracle.Observation"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2897:38:11"
                },
                "scope": 6000,
                "src": "2825:425:11",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 5866,
                  "nodeType": "Block",
                  "src": "3460:993:11",
                  "statements": [
                    {
                      "assignments": [
                        5781
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5781,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5866,
                          "src": "3470:12:11",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 5780,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3470:7:11",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5788,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5784,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5666,
                            "src": "3510:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5785,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5775,
                            "src": "3519:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5786,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5777,
                            "src": "3527:6:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5782,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "3485:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 5783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6796,
                          "src": "3485:24:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 5787,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3485:49:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3470:64:11"
                    },
                    {
                      "body": {
                        "id": 5808,
                        "nodeType": "Block",
                        "src": "3684:54:11",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5802,
                                    "name": "pairObservations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5677,
                                    "src": "3698:16:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_Observation_$5664_storage_$dyn_storage_$",
                                      "typeString": "mapping(address => struct ExampleSlidingWindowOracle.Observation storage ref[] storage ref)"
                                    }
                                  },
                                  "id": 5804,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 5803,
                                    "name": "pair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5781,
                                    "src": "3715:4:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3698:22:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Observation_$5664_storage_$dyn_storage",
                                    "typeString": "struct ExampleSlidingWindowOracle.Observation storage ref[] storage ref"
                                  }
                                },
                                "id": 5805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "push",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3698:27:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_arraypush_nonpayable$__$returns$_t_struct$_Observation_$5664_storage_$",
                                  "typeString": "function () returns (struct ExampleSlidingWindowOracle.Observation storage ref)"
                                }
                              },
                              "id": 5806,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3698:29:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Observation_$5664_storage",
                                "typeString": "struct ExampleSlidingWindowOracle.Observation storage ref"
                              }
                            },
                            "id": 5807,
                            "nodeType": "ExpressionStatement",
                            "src": "3698:29:11"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5798,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5796,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5790,
                          "src": "3662:1:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5797,
                          "name": "granularity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5670,
                          "src": "3666:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "3662:15:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 5809,
                      "initializationExpression": {
                        "assignments": [
                          5790
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5790,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5809,
                            "src": "3622:6:11",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5789,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "3622:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5795,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 5791,
                              "name": "pairObservations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5677,
                              "src": "3631:16:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_Observation_$5664_storage_$dyn_storage_$",
                                "typeString": "mapping(address => struct ExampleSlidingWindowOracle.Observation storage ref[] storage ref)"
                              }
                            },
                            "id": 5793,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 5792,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5781,
                              "src": "3648:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3631:22:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Observation_$5664_storage_$dyn_storage",
                              "typeString": "struct ExampleSlidingWindowOracle.Observation storage ref[] storage ref"
                            }
                          },
                          "id": 5794,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3631:29:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3622:38:11"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "3679:3:11",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 5799,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5790,
                            "src": "3679:1:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5801,
                        "nodeType": "ExpressionStatement",
                        "src": "3679:3:11"
                      },
                      "nodeType": "ForStatement",
                      "src": "3617:121:11"
                    },
                    {
                      "assignments": [
                        5811
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5811,
                          "mutability": "mutable",
                          "name": "observationIndex",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5866,
                          "src": "3802:22:11",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "typeName": {
                            "id": 5810,
                            "name": "uint8",
                            "nodeType": "ElementaryTypeName",
                            "src": "3802:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5816,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5813,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "3846:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 5814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3846:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 5812,
                          "name": "observationIndexOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5741,
                          "src": "3827:18:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint8_$",
                            "typeString": "function (uint256) view returns (uint8)"
                          }
                        },
                        "id": 5815,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3827:35:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3802:60:11"
                    },
                    {
                      "assignments": [
                        5818
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5818,
                          "mutability": "mutable",
                          "name": "observation",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5866,
                          "src": "3872:31:11",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                            "typeString": "struct ExampleSlidingWindowOracle.Observation"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 5817,
                            "name": "Observation",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 5664,
                            "src": "3872:11:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                              "typeString": "struct ExampleSlidingWindowOracle.Observation"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5824,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5819,
                            "name": "pairObservations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5677,
                            "src": "3906:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_Observation_$5664_storage_$dyn_storage_$",
                              "typeString": "mapping(address => struct ExampleSlidingWindowOracle.Observation storage ref[] storage ref)"
                            }
                          },
                          "id": 5821,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 5820,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5781,
                            "src": "3923:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3906:22:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Observation_$5664_storage_$dyn_storage",
                            "typeString": "struct ExampleSlidingWindowOracle.Observation storage ref[] storage ref"
                          }
                        },
                        "id": 5823,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 5822,
                          "name": "observationIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5811,
                          "src": "3929:16:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3906:40:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Observation_$5664_storage",
                          "typeString": "struct ExampleSlidingWindowOracle.Observation storage ref"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3872:74:11"
                    },
                    {
                      "assignments": [
                        5826
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5826,
                          "mutability": "mutable",
                          "name": "timeElapsed",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5866,
                          "src": "4047:16:11",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5825,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4047:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5832,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5827,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "4066:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 5828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4066:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5829,
                            "name": "observation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5818,
                            "src": "4084:11:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                              "typeString": "struct ExampleSlidingWindowOracle.Observation storage pointer"
                            }
                          },
                          "id": 5830,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5659,
                          "src": "4084:21:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4066:39:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4047:58:11"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5835,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5833,
                          "name": "timeElapsed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5826,
                          "src": "4119:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5834,
                          "name": "periodSize",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5672,
                          "src": "4133:10:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4119:24:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 5865,
                      "nodeType": "IfStatement",
                      "src": "4115:332:11",
                      "trueBody": {
                        "id": 5864,
                        "nodeType": "Block",
                        "src": "4145:302:11",
                        "statements": [
                          {
                            "assignments": [
                              5837,
                              5839,
                              null
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 5837,
                                "mutability": "mutable",
                                "name": "price0Cumulative",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 5864,
                                "src": "4160:21:11",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 5836,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4160:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 5839,
                                "mutability": "mutable",
                                "name": "price1Cumulative",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 5864,
                                "src": "4183:21:11",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 5838,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4183:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              null
                            ],
                            "id": 5844,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5842,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5781,
                                  "src": "4256:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5840,
                                  "name": "MarXDEXV2OracleLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7745,
                                  "src": "4209:22:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MarXDEXV2OracleLibrary_$7745_$",
                                    "typeString": "type(library MarXDEXV2OracleLibrary)"
                                  }
                                },
                                "id": 5841,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "currentCumulativePrices",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7744,
                                "src": "4209:46:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint32_$",
                                  "typeString": "function (address) view returns (uint256,uint256,uint32)"
                                }
                              },
                              "id": 5843,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4209:52:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint32_$",
                                "typeString": "tuple(uint256,uint256,uint32)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "4159:102:11"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5850,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5845,
                                  "name": "observation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5818,
                                  "src": "4275:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                                    "typeString": "struct ExampleSlidingWindowOracle.Observation storage pointer"
                                  }
                                },
                                "id": 5847,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5659,
                                "src": "4275:21:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5848,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "4299:5:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 5849,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4299:15:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4275:39:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5851,
                            "nodeType": "ExpressionStatement",
                            "src": "4275:39:11"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5856,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5852,
                                  "name": "observation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5818,
                                  "src": "4328:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                                    "typeString": "struct ExampleSlidingWindowOracle.Observation storage pointer"
                                  }
                                },
                                "id": 5854,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "price0Cumulative",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5661,
                                "src": "4328:28:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 5855,
                                "name": "price0Cumulative",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5837,
                                "src": "4359:16:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4328:47:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5857,
                            "nodeType": "ExpressionStatement",
                            "src": "4328:47:11"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5858,
                                  "name": "observation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5818,
                                  "src": "4389:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                                    "typeString": "struct ExampleSlidingWindowOracle.Observation storage pointer"
                                  }
                                },
                                "id": 5860,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "price1Cumulative",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5663,
                                "src": "4389:28:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 5861,
                                "name": "price1Cumulative",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5839,
                                "src": "4420:16:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4389:47:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5863,
                            "nodeType": "ExpressionStatement",
                            "src": "4389:47:11"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "c640752d",
                "id": 5867,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "update",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5778,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5775,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5867,
                      "src": "3419:14:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5774,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3419:7:11",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5777,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5867,
                      "src": "3435:14:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5776,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3435:7:11",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3418:32:11"
                },
                "returnParameters": {
                  "id": 5779,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3460:0:11"
                },
                "scope": 6000,
                "src": "3403:1050:11",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 5906,
                  "nodeType": "Block",
                  "src": "4824:262:11",
                  "statements": [
                    {
                      "assignments": [
                        5883
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5883,
                          "mutability": "mutable",
                          "name": "priceAverage",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5906,
                          "src": "4866:40:11",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                            "typeString": "struct FixedPoint.uq112x112"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 5882,
                            "name": "FixedPoint.uq112x112",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 488,
                            "src": "4866:20:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_uq112x112_$488_storage_ptr",
                              "typeString": "struct FixedPoint.uq112x112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5896,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5893,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 5890,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 5888,
                                        "name": "priceCumulativeEnd",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5871,
                                        "src": "4952:18:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 5889,
                                        "name": "priceCumulativeStart",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5869,
                                        "src": "4973:20:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4952:41:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 5891,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "4951:43:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 5892,
                                  "name": "timeElapsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5873,
                                  "src": "4997:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4951:57:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 5887,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4943:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 5886,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "4943:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5894,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4943:66:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5884,
                            "name": "FixedPoint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1109,
                            "src": "4909:10:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1109_$",
                              "typeString": "type(library FixedPoint)"
                            }
                          },
                          "id": 5885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "uq112x112",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 488,
                          "src": "4909:20:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq112x112_$488_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                          }
                        },
                        "id": 5895,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4909:110:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4866:153:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5904,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5897,
                          "name": "amountOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5878,
                          "src": "5029:9:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5900,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5875,
                                  "src": "5058:8:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5898,
                                  "name": "priceAverage",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5883,
                                  "src": "5041:12:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                    "typeString": "struct FixedPoint.uq112x112 memory"
                                  }
                                },
                                "id": 5899,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 607,
                                "src": "5041:16:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_uq112x112_$488_memory_ptr_$_t_uint256_$returns$_t_struct$_uq144x112_$491_memory_ptr_$bound_to$_t_struct$_uq112x112_$488_memory_ptr_$",
                                  "typeString": "function (struct FixedPoint.uq112x112 memory,uint256) pure returns (struct FixedPoint.uq144x112 memory)"
                                }
                              },
                              "id": 5901,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5041:26:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_uq144x112_$491_memory_ptr",
                                "typeString": "struct FixedPoint.uq144x112 memory"
                              }
                            },
                            "id": 5902,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "decode144",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 569,
                            "src": "5041:36:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_uq144x112_$491_memory_ptr_$returns$_t_uint144_$bound_to$_t_struct$_uq144x112_$491_memory_ptr_$",
                              "typeString": "function (struct FixedPoint.uq144x112 memory) pure returns (uint144)"
                            }
                          },
                          "id": 5903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5041:38:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint144",
                            "typeString": "uint144"
                          }
                        },
                        "src": "5029:50:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5905,
                      "nodeType": "ExpressionStatement",
                      "src": "5029:50:11"
                    }
                  ]
                },
                "documentation": null,
                "id": 5907,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "computeAmountOut",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5876,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5869,
                      "mutability": "mutable",
                      "name": "priceCumulativeStart",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5907,
                      "src": "4688:25:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5868,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4688:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5871,
                      "mutability": "mutable",
                      "name": "priceCumulativeEnd",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5907,
                      "src": "4715:23:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5870,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4715:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5873,
                      "mutability": "mutable",
                      "name": "timeElapsed",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5907,
                      "src": "4748:16:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5872,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4748:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5875,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5907,
                      "src": "4766:13:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5874,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4766:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4678:107:11"
                },
                "returnParameters": {
                  "id": 5879,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5878,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5907,
                      "src": "4808:14:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5877,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4808:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4807:16:11"
                },
                "scope": 6000,
                "src": "4653:433:11",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 5998,
                  "nodeType": "Block",
                  "src": "5481:956:11",
                  "statements": [
                    {
                      "assignments": [
                        5919
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5919,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5998,
                          "src": "5491:12:11",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 5918,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5491:7:11",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5926,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5922,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5666,
                            "src": "5531:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5923,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5909,
                            "src": "5540:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5924,
                            "name": "tokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5913,
                            "src": "5549:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5920,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "5506:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 5921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6796,
                          "src": "5506:24:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 5925,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5506:52:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5491:67:11"
                    },
                    {
                      "assignments": [
                        5928
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5928,
                          "mutability": "mutable",
                          "name": "firstObservation",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5998,
                          "src": "5568:36:11",
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                            "typeString": "struct ExampleSlidingWindowOracle.Observation"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 5927,
                            "name": "Observation",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 5664,
                            "src": "5568:11:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                              "typeString": "struct ExampleSlidingWindowOracle.Observation"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5932,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5930,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5919,
                            "src": "5635:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 5929,
                          "name": "getFirstObservationInWindow",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5773,
                          "src": "5607:27:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_struct$_Observation_$5664_storage_ptr_$",
                            "typeString": "function (address) view returns (struct ExampleSlidingWindowOracle.Observation storage pointer)"
                          }
                        },
                        "id": 5931,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5607:33:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                          "typeString": "struct ExampleSlidingWindowOracle.Observation storage pointer"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5568:72:11"
                    },
                    {
                      "assignments": [
                        5934
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5934,
                          "mutability": "mutable",
                          "name": "timeElapsed",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5998,
                          "src": "5651:16:11",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5933,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5651:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5940,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5939,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5935,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "5670:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 5936,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5670:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 5937,
                            "name": "firstObservation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5928,
                            "src": "5688:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                              "typeString": "struct ExampleSlidingWindowOracle.Observation storage pointer"
                            }
                          },
                          "id": 5938,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5659,
                          "src": "5688:26:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5670:44:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5651:63:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5944,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5942,
                              "name": "timeElapsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5934,
                              "src": "5732:11:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 5943,
                              "name": "windowSize",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5668,
                              "src": "5747:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5732:25:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "536c6964696e6757696e646f774f7261636c653a204d495353494e475f484953544f524943414c5f4f42534552564154494f4e",
                            "id": 5945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5759:53:11",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_20805c472e37d0165585052b64649efe4bb492e8fcaeaa3a202cc46e8a639643",
                              "typeString": "literal_string \"SlidingWindowOracle: MISSING_HISTORICAL_OBSERVATION\""
                            },
                            "value": "SlidingWindowOracle: MISSING_HISTORICAL_OBSERVATION"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_20805c472e37d0165585052b64649efe4bb492e8fcaeaa3a202cc46e8a639643",
                              "typeString": "literal_string \"SlidingWindowOracle: MISSING_HISTORICAL_OBSERVATION\""
                            }
                          ],
                          "id": 5941,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5724:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5946,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5724:89:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5947,
                      "nodeType": "ExpressionStatement",
                      "src": "5724:89:11"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5955,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5949,
                              "name": "timeElapsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5934,
                              "src": "5863:11:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5954,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5950,
                                "name": "windowSize",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5668,
                                "src": "5878:10:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5953,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 5951,
                                  "name": "periodSize",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5672,
                                  "src": "5891:10:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 5952,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5904:1:11",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "5891:14:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5878:27:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5863:42:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "536c6964696e6757696e646f774f7261636c653a20554e45585045435445445f54494d455f454c4150534544",
                            "id": 5956,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5907:46:11",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_408716186f121814b7dbc817d4e1fcdf168ff1958e9c797fca8eb4670c61ba79",
                              "typeString": "literal_string \"SlidingWindowOracle: UNEXPECTED_TIME_ELAPSED\""
                            },
                            "value": "SlidingWindowOracle: UNEXPECTED_TIME_ELAPSED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_408716186f121814b7dbc817d4e1fcdf168ff1958e9c797fca8eb4670c61ba79",
                              "typeString": "literal_string \"SlidingWindowOracle: UNEXPECTED_TIME_ELAPSED\""
                            }
                          ],
                          "id": 5948,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5855:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5957,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5855:99:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5958,
                      "nodeType": "ExpressionStatement",
                      "src": "5855:99:11"
                    },
                    {
                      "assignments": [
                        5960,
                        5962,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5960,
                          "mutability": "mutable",
                          "name": "price0Cumulative",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5998,
                          "src": "5966:21:11",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5959,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5966:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 5962,
                          "mutability": "mutable",
                          "name": "price1Cumulative",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5998,
                          "src": "5989:21:11",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5961,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5989:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 5967,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5965,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5919,
                            "src": "6062:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5963,
                            "name": "MarXDEXV2OracleLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7745,
                            "src": "6015:22:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2OracleLibrary_$7745_$",
                              "typeString": "type(library MarXDEXV2OracleLibrary)"
                            }
                          },
                          "id": 5964,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "currentCumulativePrices",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7744,
                          "src": "6015:46:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint32_$",
                            "typeString": "function (address) view returns (uint256,uint256,uint32)"
                          }
                        },
                        "id": 5966,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6015:52:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint32_$",
                          "typeString": "tuple(uint256,uint256,uint32)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5965:102:11"
                    },
                    {
                      "assignments": [
                        5969,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5969,
                          "mutability": "mutable",
                          "name": "token0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5998,
                          "src": "6078:14:11",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 5968,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6078:7:11",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 5975,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5972,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5909,
                            "src": "6125:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5973,
                            "name": "tokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5913,
                            "src": "6134:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5970,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "6097:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 5971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sortTokens",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6751,
                          "src": "6097:27:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                            "typeString": "function (address,address) pure returns (address,address)"
                          }
                        },
                        "id": 5974,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6097:46:11",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                          "typeString": "tuple(address,address)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6077:66:11"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 5978,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5976,
                          "name": "token0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5969,
                          "src": "6158:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 5977,
                          "name": "tokenIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5909,
                          "src": "6168:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "6158:17:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 5996,
                        "nodeType": "Block",
                        "src": "6307:124:11",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5989,
                                    "name": "firstObservation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5928,
                                    "src": "6345:16:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                                      "typeString": "struct ExampleSlidingWindowOracle.Observation storage pointer"
                                    }
                                  },
                                  "id": 5990,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "price1Cumulative",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5663,
                                  "src": "6345:33:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5991,
                                  "name": "price1Cumulative",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5962,
                                  "src": "6380:16:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5992,
                                  "name": "timeElapsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5934,
                                  "src": "6398:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5993,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5911,
                                  "src": "6411:8:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 5988,
                                "name": "computeAmountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5907,
                                "src": "6328:16:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 5994,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6328:92:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 5917,
                            "id": 5995,
                            "nodeType": "Return",
                            "src": "6321:99:11"
                          }
                        ]
                      },
                      "id": 5997,
                      "nodeType": "IfStatement",
                      "src": "6154:277:11",
                      "trueBody": {
                        "id": 5987,
                        "nodeType": "Block",
                        "src": "6177:124:11",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5980,
                                    "name": "firstObservation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5928,
                                    "src": "6215:16:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Observation_$5664_storage_ptr",
                                      "typeString": "struct ExampleSlidingWindowOracle.Observation storage pointer"
                                    }
                                  },
                                  "id": 5981,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "price0Cumulative",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5661,
                                  "src": "6215:33:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5982,
                                  "name": "price0Cumulative",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5960,
                                  "src": "6250:16:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5983,
                                  "name": "timeElapsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5934,
                                  "src": "6268:11:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5984,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5911,
                                  "src": "6281:8:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 5979,
                                "name": "computeAmountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5907,
                                "src": "6198:16:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 5985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6198:92:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 5917,
                            "id": 5986,
                            "nodeType": "Return",
                            "src": "6191:99:11"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "8c86f1e4",
                "id": 5999,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "consult",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5914,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5909,
                      "mutability": "mutable",
                      "name": "tokenIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5999,
                      "src": "5392:15:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5908,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5392:7:11",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5911,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5999,
                      "src": "5409:13:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5910,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5409:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5913,
                      "mutability": "mutable",
                      "name": "tokenOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5999,
                      "src": "5424:16:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5912,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5424:7:11",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5391:50:11"
                },
                "returnParameters": {
                  "id": 5917,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5916,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5999,
                      "src": "5465:14:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5915,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5465:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5464:16:11"
                },
                "scope": 6000,
                "src": "5375:1062:11",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 6001,
            "src": "734:5705:11"
          }
        ],
        "src": "0:6440:11"
      }
    },
    "contracts/examples/ExampleSwapToPrice.sol": {
      "id": 12,
      "AST": {
        "absolutePath": "contracts/examples/ExampleSwapToPrice.sol",
        "exportedSymbols": {
          "ExampleSwapToPrice": [
            6200
          ]
        },
        "id": 6201,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6002,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".6"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:23:12"
          },
          {
            "absolutePath": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Pair.sol",
            "file": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Pair.sol",
            "id": 6003,
            "nodeType": "ImportDirective",
            "scope": 6201,
            "sourceUnit": 1796,
            "src": "25:76:12",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/Babylonian.sol",
            "file": "@marx-dex/marx-dex-lib/contracts/libraries/Babylonian.sol",
            "id": 6004,
            "nodeType": "ImportDirective",
            "scope": 6201,
            "sourceUnit": 203,
            "src": "102:67:12",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/TransferHelper.sol",
            "file": "@marx-dex/marx-dex-lib/contracts/libraries/TransferHelper.sol",
            "id": 6005,
            "nodeType": "ImportDirective",
            "scope": 6201,
            "sourceUnit": 1491,
            "src": "170:71:12",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/MarXDEXV2LiquidityMathLibrary.sol",
            "file": "../libraries/MarXDEXV2LiquidityMathLibrary.sol",
            "id": 6006,
            "nodeType": "ImportDirective",
            "scope": 6201,
            "sourceUnit": 7639,
            "src": "243:56:12",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20.sol",
            "file": "../interfaces/IERC20.sol",
            "id": 6007,
            "nodeType": "ImportDirective",
            "scope": 6201,
            "sourceUnit": 6285,
            "src": "300:34:12",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IMarXDEXV2Router01.sol",
            "file": "../interfaces/IMarXDEXV2Router01.sol",
            "id": 6008,
            "nodeType": "ImportDirective",
            "scope": 6201,
            "sourceUnit": 6593,
            "src": "335:46:12",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/SafeMath.sol",
            "file": "../libraries/SafeMath.sol",
            "id": 6009,
            "nodeType": "ImportDirective",
            "scope": 6201,
            "sourceUnit": 7821,
            "src": "382:35:12",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/MarXDEXV2Library.sol",
            "file": "../libraries/MarXDEXV2Library.sol",
            "id": 6010,
            "nodeType": "ImportDirective",
            "scope": 6201,
            "sourceUnit": 7173,
            "src": "418:43:12",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 6200,
            "linearizedBaseContracts": [
              6200
            ],
            "name": "ExampleSwapToPrice",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 6013,
                "libraryName": {
                  "contractScope": null,
                  "id": 6011,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 7820,
                  "src": "503:8:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$7820",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "497:27:12",
                "typeName": {
                  "id": 6012,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "516:7:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "constant": false,
                "functionSelector": "f887ea40",
                "id": 6015,
                "mutability": "immutable",
                "name": "router",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 6200,
                "src": "530:42:12",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                  "typeString": "contract IMarXDEXV2Router01"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 6014,
                  "name": "IMarXDEXV2Router01",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6592,
                  "src": "530:18:12",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                    "typeString": "contract IMarXDEXV2Router01"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "c45a0155",
                "id": 6017,
                "mutability": "immutable",
                "name": "factory",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 6200,
                "src": "578:32:12",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 6016,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "578:7:12",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 6032,
                  "nodeType": "Block",
                  "src": "682:61:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6026,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 6024,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6017,
                          "src": "692:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 6025,
                          "name": "factory_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6019,
                          "src": "702:8:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "692:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 6027,
                      "nodeType": "ExpressionStatement",
                      "src": "692:18:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6030,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 6028,
                          "name": "router",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6015,
                          "src": "720:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                            "typeString": "contract IMarXDEXV2Router01"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 6029,
                          "name": "router_",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6021,
                          "src": "729:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                            "typeString": "contract IMarXDEXV2Router01"
                          }
                        },
                        "src": "720:16:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                          "typeString": "contract IMarXDEXV2Router01"
                        }
                      },
                      "id": 6031,
                      "nodeType": "ExpressionStatement",
                      "src": "720:16:12"
                    }
                  ]
                },
                "documentation": null,
                "id": 6033,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6022,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6019,
                      "mutability": "mutable",
                      "name": "factory_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6033,
                      "src": "629:16:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6018,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "629:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6021,
                      "mutability": "mutable",
                      "name": "router_",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6033,
                      "src": "647:26:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                        "typeString": "contract IMarXDEXV2Router01"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6020,
                        "name": "IMarXDEXV2Router01",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6592,
                        "src": "647:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                          "typeString": "contract IMarXDEXV2Router01"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "628:46:12"
                },
                "returnParameters": {
                  "id": 6023,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "682:0:12"
                },
                "scope": 6200,
                "src": "617:126:12",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 6198,
                  "nodeType": "Block",
                  "src": "1275:1600:12",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 6059,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6055,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6053,
                                "name": "truePriceTokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6039,
                                "src": "1372:15:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6054,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1391:1:12",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1372:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6056,
                                "name": "truePriceTokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6041,
                                "src": "1396:15:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6057,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1415:1:12",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1396:20:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1372:44:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4578616d706c6553776170546f50726963653a205a45524f5f5052494345",
                            "id": 6060,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1418:32:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_28884a31faca5d65acd285d3e7facdbc4f9dbd1892b1de1088d8d4416762107c",
                              "typeString": "literal_string \"ExampleSwapToPrice: ZERO_PRICE\""
                            },
                            "value": "ExampleSwapToPrice: ZERO_PRICE"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_28884a31faca5d65acd285d3e7facdbc4f9dbd1892b1de1088d8d4416762107c",
                              "typeString": "literal_string \"ExampleSwapToPrice: ZERO_PRICE\""
                            }
                          ],
                          "id": 6052,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1364:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6061,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1364:87:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6062,
                      "nodeType": "ExpressionStatement",
                      "src": "1364:87:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 6070,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6066,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6064,
                                "name": "maxSpendTokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6043,
                                "src": "1569:14:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6065,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1587:1:12",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1569:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6067,
                                "name": "maxSpendTokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6045,
                                "src": "1592:14:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6068,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1610:1:12",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1592:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1569:42:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4578616d706c6553776170546f50726963653a205a45524f5f5350454e44",
                            "id": 6071,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1613:32:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0e350328e0fc66ff97196802ff2d70f334d01d23a12a3b201cf85446302b610f",
                              "typeString": "literal_string \"ExampleSwapToPrice: ZERO_SPEND\""
                            },
                            "value": "ExampleSwapToPrice: ZERO_SPEND"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_0e350328e0fc66ff97196802ff2d70f334d01d23a12a3b201cf85446302b610f",
                              "typeString": "literal_string \"ExampleSwapToPrice: ZERO_SPEND\""
                            }
                          ],
                          "id": 6063,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1561:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6072,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1561:85:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6073,
                      "nodeType": "ExpressionStatement",
                      "src": "1561:85:12"
                    },
                    {
                      "assignments": [
                        6075
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6075,
                          "mutability": "mutable",
                          "name": "aToB",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6198,
                          "src": "1657:9:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 6074,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1657:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6076,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1657:9:12"
                    },
                    {
                      "assignments": [
                        6078
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6078,
                          "mutability": "mutable",
                          "name": "amountIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6198,
                          "src": "1676:16:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6077,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1676:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6079,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1676:16:12"
                    },
                    {
                      "id": 6103,
                      "nodeType": "Block",
                      "src": "1702:308:12",
                      "statements": [
                        {
                          "assignments": [
                            6081,
                            6083
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 6081,
                              "mutability": "mutable",
                              "name": "reserveA",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 6103,
                              "src": "1717:16:12",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 6080,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1717:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            },
                            {
                              "constant": false,
                              "id": 6083,
                              "mutability": "mutable",
                              "name": "reserveB",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 6103,
                              "src": "1735:16:12",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 6082,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1735:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 6090,
                          "initialValue": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6086,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6017,
                                "src": "1784:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 6087,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6035,
                                "src": "1793:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 6088,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6037,
                                "src": "1801:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 6084,
                                "name": "MarXDEXV2Library",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7172,
                                "src": "1755:16:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                  "typeString": "type(library MarXDEXV2Library)"
                                }
                              },
                              "id": 6085,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getReserves",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6846,
                              "src": "1755:28:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,address,address) view returns (uint256,uint256)"
                              }
                            },
                            "id": 6089,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1755:53:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1716:92:12"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 6101,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 6091,
                                  "name": "aToB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6075,
                                  "src": "1823:4:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 6092,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6078,
                                  "src": "1829:8:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 6093,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "nodeType": "TupleExpression",
                              "src": "1822:16:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                "typeString": "tuple(bool,uint256)"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6096,
                                  "name": "truePriceTokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6039,
                                  "src": "1917:15:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 6097,
                                  "name": "truePriceTokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6041,
                                  "src": "1934:15:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 6098,
                                  "name": "reserveA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6081,
                                  "src": "1967:8:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 6099,
                                  "name": "reserveB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6083,
                                  "src": "1977:8:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6094,
                                  "name": "MarXDEXV2LiquidityMathLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7638,
                                  "src": "1841:29:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MarXDEXV2LiquidityMathLibrary_$7638_$",
                                    "typeString": "type(library MarXDEXV2LiquidityMathLibrary)"
                                  }
                                },
                                "id": 6095,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "computeProfitMaximizingTrade",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7273,
                                "src": "1841:58:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256,uint256) pure returns (bool,uint256)"
                                }
                              },
                              "id": 6100,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1841:158:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                "typeString": "tuple(bool,uint256)"
                              }
                            },
                            "src": "1822:177:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 6102,
                          "nodeType": "ExpressionStatement",
                          "src": "1822:177:12"
                        }
                      ]
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6107,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6105,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6078,
                              "src": "2028:8:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6106,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2039:1:12",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2028:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4578616d706c6553776170546f50726963653a205a45524f5f414d4f554e545f494e",
                            "id": 6108,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2042:36:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e00c3db9f0c792ecddaeae01031fb06d978f06975d30b88ac8730a99f6d0fa3a",
                              "typeString": "literal_string \"ExampleSwapToPrice: ZERO_AMOUNT_IN\""
                            },
                            "value": "ExampleSwapToPrice: ZERO_AMOUNT_IN"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e00c3db9f0c792ecddaeae01031fb06d978f06975d30b88ac8730a99f6d0fa3a",
                              "typeString": "literal_string \"ExampleSwapToPrice: ZERO_AMOUNT_IN\""
                            }
                          ],
                          "id": 6104,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2020:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6109,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2020:59:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6110,
                      "nodeType": "ExpressionStatement",
                      "src": "2020:59:12"
                    },
                    {
                      "assignments": [
                        6112
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6112,
                          "mutability": "mutable",
                          "name": "maxSpend",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6198,
                          "src": "2143:16:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6111,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2143:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6117,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "id": 6113,
                          "name": "aToB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6075,
                          "src": "2162:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "id": 6115,
                          "name": "maxSpendTokenB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6045,
                          "src": "2186:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "2162:38:12",
                        "trueExpression": {
                          "argumentTypes": null,
                          "id": 6114,
                          "name": "maxSpendTokenA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6043,
                          "src": "2169:14:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2143:57:12"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6120,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6118,
                          "name": "amountIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6078,
                          "src": "2214:8:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 6119,
                          "name": "maxSpend",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6112,
                          "src": "2225:8:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2214:19:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 6126,
                      "nodeType": "IfStatement",
                      "src": "2210:69:12",
                      "trueBody": {
                        "id": 6125,
                        "nodeType": "Block",
                        "src": "2235:44:12",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6123,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 6121,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6078,
                                "src": "2249:8:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 6122,
                                "name": "maxSpend",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6112,
                                "src": "2260:8:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2249:19:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6124,
                            "nodeType": "ExpressionStatement",
                            "src": "2249:19:12"
                          }
                        ]
                      }
                    },
                    {
                      "assignments": [
                        6128
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6128,
                          "mutability": "mutable",
                          "name": "tokenIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6198,
                          "src": "2289:15:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 6127,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2289:7:12",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6133,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "id": 6129,
                          "name": "aToB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6075,
                          "src": "2307:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "id": 6131,
                          "name": "tokenB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6037,
                          "src": "2323:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6132,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "2307:22:12",
                        "trueExpression": {
                          "argumentTypes": null,
                          "id": 6130,
                          "name": "tokenA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6035,
                          "src": "2314:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2289:40:12"
                    },
                    {
                      "assignments": [
                        6135
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6135,
                          "mutability": "mutable",
                          "name": "tokenOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6198,
                          "src": "2339:16:12",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 6134,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2339:7:12",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6140,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "id": 6136,
                          "name": "aToB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6075,
                          "src": "2358:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "id": 6138,
                          "name": "tokenA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6035,
                          "src": "2374:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "2358:22:12",
                        "trueExpression": {
                          "argumentTypes": null,
                          "id": 6137,
                          "name": "tokenB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6037,
                          "src": "2365:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2339:41:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6144,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6128,
                            "src": "2422:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6145,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2431:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2431:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6149,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "2451:4:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ExampleSwapToPrice_$6200",
                                  "typeString": "contract ExampleSwapToPrice"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ExampleSwapToPrice_$6200",
                                  "typeString": "contract ExampleSwapToPrice"
                                }
                              ],
                              "id": 6148,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2443:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 6147,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2443:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6150,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2443:13:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6151,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6078,
                            "src": "2458:8:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 6141,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "2390:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 6143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1464,
                          "src": "2390:31:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 6152,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2390:77:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6153,
                      "nodeType": "ExpressionStatement",
                      "src": "2390:77:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6157,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6128,
                            "src": "2504:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6160,
                                "name": "router",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6015,
                                "src": "2521:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                                  "typeString": "contract IMarXDEXV2Router01"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                                  "typeString": "contract IMarXDEXV2Router01"
                                }
                              ],
                              "id": 6159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2513:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 6158,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2513:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6161,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2513:15:12",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6162,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6078,
                            "src": "2530:8:12",
                            "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": 6154,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "2477:14:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$1490_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 6156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeApprove",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1375,
                          "src": "2477:26:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 6163,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2477:62:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6164,
                      "nodeType": "ExpressionStatement",
                      "src": "2477:62:12"
                    },
                    {
                      "assignments": [
                        6169
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6169,
                          "mutability": "mutable",
                          "name": "path",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6198,
                          "src": "2550:21:12",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[]"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 6167,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2550:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 6168,
                            "length": null,
                            "nodeType": "ArrayTypeName",
                            "src": "2550:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                              "typeString": "address[]"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6175,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 6173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2588:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            }
                          ],
                          "id": 6172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "2574:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                            "typeString": "function (uint256) pure returns (address[] memory)"
                          },
                          "typeName": {
                            "baseType": {
                              "id": 6170,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2578:7:12",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 6171,
                            "length": null,
                            "nodeType": "ArrayTypeName",
                            "src": "2578:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                              "typeString": "address[]"
                            }
                          }
                        },
                        "id": 6174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2574:16:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2550:40:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6180,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 6176,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6169,
                            "src": "2600:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 6178,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 6177,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2605:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2600:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 6179,
                          "name": "tokenIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6128,
                          "src": "2610:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2600:17:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 6181,
                      "nodeType": "ExpressionStatement",
                      "src": "2600:17:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6186,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 6182,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6169,
                            "src": "2627:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 6184,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 6183,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2632:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2627:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 6185,
                          "name": "tokenOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6135,
                          "src": "2637:8:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2627:18:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 6187,
                      "nodeType": "ExpressionStatement",
                      "src": "2627:18:12"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6191,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6078,
                            "src": "2701:8:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 6192,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2723:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          {
                            "argumentTypes": null,
                            "id": 6193,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6169,
                            "src": "2816:4:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6194,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6047,
                            "src": "2834:2:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6195,
                            "name": "deadline",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6049,
                            "src": "2850:8:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 6188,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6015,
                            "src": "2656:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                              "typeString": "contract IMarXDEXV2Router01"
                            }
                          },
                          "id": 6190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "swapExactTokensForTokens",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6455,
                          "src": "2656:31:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                          }
                        },
                        "id": 6196,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2656:212:12",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 6197,
                      "nodeType": "ExpressionStatement",
                      "src": "2656:212:12"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "bef90fd3",
                "id": 6199,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapToPrice",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6050,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6035,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6199,
                      "src": "1047:14:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6034,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1047:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6037,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6199,
                      "src": "1071:14:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6036,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1071:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6039,
                      "mutability": "mutable",
                      "name": "truePriceTokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6199,
                      "src": "1095:23:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6038,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1095:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6041,
                      "mutability": "mutable",
                      "name": "truePriceTokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6199,
                      "src": "1128:23:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6040,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1128:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6043,
                      "mutability": "mutable",
                      "name": "maxSpendTokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6199,
                      "src": "1161:22:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6042,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1161:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6045,
                      "mutability": "mutable",
                      "name": "maxSpendTokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6199,
                      "src": "1193:22:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6044,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1193:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6047,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6199,
                      "src": "1225:10:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6046,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1225:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6049,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6199,
                      "src": "1245:16:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6048,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1245:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1037:230:12"
                },
                "returnParameters": {
                  "id": 6051,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1275:0:12"
                },
                "scope": 6200,
                "src": "1017:1858:12",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 6201,
            "src": "463:2414:12"
          }
        ],
        "src": "0:2878:12"
      }
    },
    "contracts/interfaces/IERC20.sol": {
      "id": 13,
      "AST": {
        "absolutePath": "contracts/interfaces/IERC20.sol",
        "exportedSymbols": {
          "IERC20": [
            6284
          ]
        },
        "id": 6285,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6202,
            "literals": [
              "solidity",
              ">=",
              "0.5",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:13"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 6284,
            "linearizedBaseContracts": [
              6284
            ],
            "name": "IERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "documentation": null,
                "id": 6210,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 6209,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6204,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6210,
                      "src": "64:21:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6203,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "64:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6206,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6210,
                      "src": "87:23:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6205,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "87:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6208,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6210,
                      "src": "112:10:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6207,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "112:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "63:60:13"
                },
                "src": "49:75:13"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 6218,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 6217,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6212,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6218,
                      "src": "144:20:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6211,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "144:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6214,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6218,
                      "src": "166:18:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6213,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "166:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6216,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6218,
                      "src": "186:10:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6215,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "186:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "143:54:13"
                },
                "src": "129:69:13"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "06fdde03",
                "id": 6223,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "name",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6219,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "217:2:13"
                },
                "returnParameters": {
                  "id": 6222,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6221,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6223,
                      "src": "243:13:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6220,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "243:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "242:15:13"
                },
                "scope": 6284,
                "src": "204:54:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "95d89b41",
                "id": 6228,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "symbol",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6224,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "278:2:13"
                },
                "returnParameters": {
                  "id": 6227,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6226,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6228,
                      "src": "304:13:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6225,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "304:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "303:15:13"
                },
                "scope": 6284,
                "src": "263:56:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "313ce567",
                "id": 6233,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "decimals",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6229,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "341:2:13"
                },
                "returnParameters": {
                  "id": 6232,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6231,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6233,
                      "src": "367:5:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 6230,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "367:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "366:7:13"
                },
                "scope": 6284,
                "src": "324:50:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "18160ddd",
                "id": 6238,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6234,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "399:2:13"
                },
                "returnParameters": {
                  "id": 6237,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6236,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6238,
                      "src": "425:4:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6235,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "425:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "424:6:13"
                },
                "scope": 6284,
                "src": "379:52:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "70a08231",
                "id": 6245,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6241,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6240,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6245,
                      "src": "455:13:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6239,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "455:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "454:15:13"
                },
                "returnParameters": {
                  "id": 6244,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6243,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6245,
                      "src": "493:4:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6242,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "493:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "492:6:13"
                },
                "scope": 6284,
                "src": "436:63:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "dd62ed3e",
                "id": 6254,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allowance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6250,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6247,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6254,
                      "src": "523:13:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6246,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "523:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6249,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6254,
                      "src": "538:15:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6248,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "538:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "522:32:13"
                },
                "returnParameters": {
                  "id": 6253,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6252,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6254,
                      "src": "578:4:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6251,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "578:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "577:6:13"
                },
                "scope": 6284,
                "src": "504:80:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 6263,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6259,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6256,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6263,
                      "src": "607:15:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6255,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "607:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6258,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6263,
                      "src": "624:10:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6257,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "624:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "606:29:13"
                },
                "returnParameters": {
                  "id": 6262,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6261,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6263,
                      "src": "654:4:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6260,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "654:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "653:6:13"
                },
                "scope": 6284,
                "src": "590:70:13",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 6272,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6268,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6265,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6272,
                      "src": "683:10:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6264,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "683:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6267,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6272,
                      "src": "695:10:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6266,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "695:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "682:24:13"
                },
                "returnParameters": {
                  "id": 6271,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6270,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6272,
                      "src": "725:4:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6269,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "725:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "724:6:13"
                },
                "scope": 6284,
                "src": "665:66:13",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 6283,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6279,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6274,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6283,
                      "src": "758:12:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6273,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "758:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6276,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6283,
                      "src": "772:10:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6275,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "772:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6278,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6283,
                      "src": "784:10:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6277,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "784:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "757:38:13"
                },
                "returnParameters": {
                  "id": 6282,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6281,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6283,
                      "src": "814:4:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6280,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "814:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "813:6:13"
                },
                "scope": 6284,
                "src": "736:84:13",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 6285,
            "src": "26:796:13"
          }
        ],
        "src": "0:823:13"
      }
    },
    "contracts/interfaces/IMarXDEXV2Router01.sol": {
      "id": 14,
      "AST": {
        "absolutePath": "contracts/interfaces/IMarXDEXV2Router01.sol",
        "exportedSymbols": {
          "IMarXDEXV2Router01": [
            6592
          ]
        },
        "id": 6593,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6286,
            "literals": [
              "solidity",
              ">=",
              "0.6",
              ".2"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:14"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 6592,
            "linearizedBaseContracts": [
              6592
            ],
            "name": "IMarXDEXV2Router01",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "functionSelector": "c45a0155",
                "id": 6291,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "factory",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6287,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "77:2:14"
                },
                "returnParameters": {
                  "id": 6290,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6289,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6291,
                      "src": "103:7:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6288,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "103:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "102:9:14"
                },
                "scope": 6592,
                "src": "61:51:14",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "ad5c4648",
                "id": 6296,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "WETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6292,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "130:2:14"
                },
                "returnParameters": {
                  "id": 6295,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6294,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6296,
                      "src": "156:7:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6293,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "156:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "155:9:14"
                },
                "scope": 6592,
                "src": "117:48:14",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "e8e33700",
                "id": 6321,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "addLiquidity",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6313,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6298,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6321,
                      "src": "202:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6297,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "202:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6300,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6321,
                      "src": "226:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6299,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "226:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6302,
                      "mutability": "mutable",
                      "name": "amountADesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6321,
                      "src": "250:19:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6301,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "250:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6304,
                      "mutability": "mutable",
                      "name": "amountBDesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6321,
                      "src": "279:19:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6303,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "279:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6306,
                      "mutability": "mutable",
                      "name": "amountAMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6321,
                      "src": "308:15:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6305,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "308:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6308,
                      "mutability": "mutable",
                      "name": "amountBMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6321,
                      "src": "333:15:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6307,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "333:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6310,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6321,
                      "src": "358:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6309,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "358:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6312,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6321,
                      "src": "378:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6311,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "378:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "192:205:14"
                },
                "returnParameters": {
                  "id": 6320,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6315,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6321,
                      "src": "416:12:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6314,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "416:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6317,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6321,
                      "src": "430:12:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6316,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "430:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6319,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6321,
                      "src": "444:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6318,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "444:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "415:44:14"
                },
                "scope": 6592,
                "src": "171:289:14",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "f305d719",
                "id": 6342,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "addLiquidityETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6334,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6323,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6342,
                      "src": "499:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6322,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "499:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6325,
                      "mutability": "mutable",
                      "name": "amountTokenDesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6342,
                      "src": "522:23:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6324,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "522:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6327,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6342,
                      "src": "555:19:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6326,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "555:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6329,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6342,
                      "src": "584:17:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6328,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "584:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6331,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6342,
                      "src": "611:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6330,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "611:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6333,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6342,
                      "src": "631:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6332,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "631:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "489:161:14"
                },
                "returnParameters": {
                  "id": 6341,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6336,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6342,
                      "src": "677:16:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6335,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "677:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6338,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6342,
                      "src": "695:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6337,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "695:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6340,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6342,
                      "src": "711:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6339,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "711:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "676:50:14"
                },
                "scope": 6592,
                "src": "465:262:14",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "baa2abde",
                "id": 6363,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidity",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6357,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6344,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6363,
                      "src": "766:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6343,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "766:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6346,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6363,
                      "src": "790:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6345,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "790:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6348,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6363,
                      "src": "814:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6347,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "814:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6350,
                      "mutability": "mutable",
                      "name": "amountAMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6363,
                      "src": "838:15:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6349,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "838:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6352,
                      "mutability": "mutable",
                      "name": "amountBMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6363,
                      "src": "863:15:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6351,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "863:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6354,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6363,
                      "src": "888:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6353,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "888:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6356,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6363,
                      "src": "908:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6355,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "908:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "756:171:14"
                },
                "returnParameters": {
                  "id": 6362,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6359,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6363,
                      "src": "946:12:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6358,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "946:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6361,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6363,
                      "src": "960:12:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6360,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "960:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "945:28:14"
                },
                "scope": 6592,
                "src": "732:242:14",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "02751cec",
                "id": 6382,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6376,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6365,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6382,
                      "src": "1016:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6364,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1016:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6367,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6382,
                      "src": "1039:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6366,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1039:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6369,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6382,
                      "src": "1063:19:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6368,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1063:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6371,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6382,
                      "src": "1092:17:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6370,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1092:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6373,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6382,
                      "src": "1119:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6372,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1119:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6375,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6382,
                      "src": "1139:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6374,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1139:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1006:152:14"
                },
                "returnParameters": {
                  "id": 6381,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6378,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6382,
                      "src": "1177:16:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6377,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1177:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6380,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6382,
                      "src": "1195:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6379,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1195:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1176:34:14"
                },
                "scope": 6592,
                "src": "979:232:14",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "2195995c",
                "id": 6411,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityWithPermit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6405,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6384,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6411,
                      "src": "1260:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6383,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1260:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6386,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6411,
                      "src": "1284:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6385,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1284:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6388,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6411,
                      "src": "1308:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6387,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1308:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6390,
                      "mutability": "mutable",
                      "name": "amountAMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6411,
                      "src": "1332:15:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6389,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1332:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6392,
                      "mutability": "mutable",
                      "name": "amountBMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6411,
                      "src": "1357:15:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6391,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1357:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6394,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6411,
                      "src": "1382:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6393,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1382:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6396,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6411,
                      "src": "1402:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6395,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1402:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6398,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6411,
                      "src": "1425:15:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6397,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1425:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6400,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6411,
                      "src": "1442:7:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 6399,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "1442:5:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6402,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6411,
                      "src": "1451:9:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6401,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1451:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6404,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6411,
                      "src": "1462:9:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6403,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1462:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1250:227:14"
                },
                "returnParameters": {
                  "id": 6410,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6407,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6411,
                      "src": "1496:12:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6406,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1496:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6409,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6411,
                      "src": "1510:12:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6408,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1510:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1495:28:14"
                },
                "scope": 6592,
                "src": "1216:308:14",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "ded9382a",
                "id": 6438,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETHWithPermit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6432,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6413,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6438,
                      "src": "1576:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6412,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1576:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6415,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6438,
                      "src": "1599:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6414,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1599:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6417,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6438,
                      "src": "1623:19:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6416,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1623:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6419,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6438,
                      "src": "1652:17:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6418,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1652:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6421,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6438,
                      "src": "1679:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6420,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1679:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6423,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6438,
                      "src": "1699:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6422,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1699:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6425,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6438,
                      "src": "1722:15:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6424,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1722:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6427,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6438,
                      "src": "1739:7:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 6426,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "1739:5:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6429,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6438,
                      "src": "1748:9:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6428,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1748:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6431,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6438,
                      "src": "1759:9:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6430,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1759:7:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1566:208:14"
                },
                "returnParameters": {
                  "id": 6437,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6434,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6438,
                      "src": "1793:16:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6433,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1793:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6436,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6438,
                      "src": "1811:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6435,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1811:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1792:34:14"
                },
                "scope": 6592,
                "src": "1529:298:14",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "38ed1739",
                "id": 6455,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactTokensForTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6450,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6440,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6455,
                      "src": "1875:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6439,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1875:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6442,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6455,
                      "src": "1898:17:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6441,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1898:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6445,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6455,
                      "src": "1925:23:14",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6443,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1925:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6444,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "1925:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6447,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6455,
                      "src": "1958:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6446,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1958:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6449,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6455,
                      "src": "1978:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6448,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1978:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1865:132:14"
                },
                "returnParameters": {
                  "id": 6454,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6453,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6455,
                      "src": "2016:21:14",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6451,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2016:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6452,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2016:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2015:23:14"
                },
                "scope": 6592,
                "src": "1832:207:14",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "8803dbee",
                "id": 6472,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapTokensForExactTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6467,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6457,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6472,
                      "src": "2087:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6456,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2087:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6459,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6472,
                      "src": "2111:16:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6458,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2111:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6462,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6472,
                      "src": "2137:23:14",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6460,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2137:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6461,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2137:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6464,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6472,
                      "src": "2170:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6463,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2170:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6466,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6472,
                      "src": "2190:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6465,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2190:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2077:132:14"
                },
                "returnParameters": {
                  "id": 6471,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6470,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6472,
                      "src": "2228:21:14",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6468,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2228:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6469,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2228:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2227:23:14"
                },
                "scope": 6592,
                "src": "2044:207:14",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "7ff36ab5",
                "id": 6487,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactETHForTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6482,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6474,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6487,
                      "src": "2287:17:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6473,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2287:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6477,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6487,
                      "src": "2306:23:14",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6475,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2306:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6476,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2306:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6479,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6487,
                      "src": "2331:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6478,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2331:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6481,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6487,
                      "src": "2343:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6480,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2343:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2286:71:14"
                },
                "returnParameters": {
                  "id": 6486,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6485,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6487,
                      "src": "2408:21:14",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6483,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2408:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6484,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2408:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2407:23:14"
                },
                "scope": 6592,
                "src": "2256:175:14",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "4a25d94a",
                "id": 6504,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapTokensForExactETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6499,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6489,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6504,
                      "src": "2467:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6488,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2467:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6491,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6504,
                      "src": "2483:16:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6490,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2483:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6494,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6504,
                      "src": "2501:23:14",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6492,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2501:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6493,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2501:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6496,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6504,
                      "src": "2526:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6495,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2526:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6498,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6504,
                      "src": "2538:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6497,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2538:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2466:86:14"
                },
                "returnParameters": {
                  "id": 6503,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6502,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6504,
                      "src": "2587:21:14",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6500,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2587:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6501,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2587:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2586:23:14"
                },
                "scope": 6592,
                "src": "2436:174:14",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "18cbafe5",
                "id": 6521,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactTokensForETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6516,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6506,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6521,
                      "src": "2646:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6505,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2646:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6508,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6521,
                      "src": "2661:17:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6507,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2661:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6511,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6521,
                      "src": "2680:23:14",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6509,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2680:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6510,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2680:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6513,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6521,
                      "src": "2705:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6512,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2705:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6515,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6521,
                      "src": "2717:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6514,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2717:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2645:86:14"
                },
                "returnParameters": {
                  "id": 6520,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6519,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6521,
                      "src": "2766:21:14",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6517,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2766:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6518,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2766:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2765:23:14"
                },
                "scope": 6592,
                "src": "2615:174:14",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "fb3bdb41",
                "id": 6536,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapETHForExactTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6531,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6523,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6536,
                      "src": "2825:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6522,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2825:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6526,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6536,
                      "src": "2841:23:14",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6524,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2841:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6525,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2841:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6528,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6536,
                      "src": "2866:10:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6527,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2866:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6530,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6536,
                      "src": "2878:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6529,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2878:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2824:68:14"
                },
                "returnParameters": {
                  "id": 6535,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6534,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6536,
                      "src": "2943:21:14",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6532,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2943:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6533,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2943:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2942:23:14"
                },
                "scope": 6592,
                "src": "2794:172:14",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "ad615dec",
                "id": 6547,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "quote",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6543,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6538,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6547,
                      "src": "2987:12:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6537,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2987:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6540,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6547,
                      "src": "3001:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6539,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3001:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6542,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6547,
                      "src": "3016:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6541,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3016:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2986:44:14"
                },
                "returnParameters": {
                  "id": 6546,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6545,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6547,
                      "src": "3054:12:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6544,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3054:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3053:14:14"
                },
                "scope": 6592,
                "src": "2972:96:14",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "054d50d4",
                "id": 6558,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountOut",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6554,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6549,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6558,
                      "src": "3095:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6548,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3095:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6551,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6558,
                      "src": "3110:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6550,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3110:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6553,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6558,
                      "src": "3126:15:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6552,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3126:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3094:48:14"
                },
                "returnParameters": {
                  "id": 6557,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6556,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6558,
                      "src": "3166:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6555,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3166:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3165:16:14"
                },
                "scope": 6592,
                "src": "3073:109:14",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "85f8c259",
                "id": 6569,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountIn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6565,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6560,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6569,
                      "src": "3208:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6559,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3208:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6562,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6569,
                      "src": "3224:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6561,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3224:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6564,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6569,
                      "src": "3240:15:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6563,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3240:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3207:49:14"
                },
                "returnParameters": {
                  "id": 6568,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6567,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6569,
                      "src": "3280:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6566,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3280:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3279:15:14"
                },
                "scope": 6592,
                "src": "3187:108:14",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d06ca61f",
                "id": 6580,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountsOut",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6575,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6571,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6580,
                      "src": "3323:13:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6570,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3323:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6574,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6580,
                      "src": "3338:23:14",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6572,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3338:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6573,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3338:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3322:40:14"
                },
                "returnParameters": {
                  "id": 6579,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6578,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6580,
                      "src": "3386:21:14",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6576,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3386:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6577,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3386:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3385:23:14"
                },
                "scope": 6592,
                "src": "3300:109:14",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "1f00ca74",
                "id": 6591,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountsIn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6586,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6582,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6591,
                      "src": "3436:14:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6581,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3436:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6585,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6591,
                      "src": "3452:23:14",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6583,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3452:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6584,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3452:9:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3435:41:14"
                },
                "returnParameters": {
                  "id": 6590,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6589,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6591,
                      "src": "3500:21:14",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6587,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3500:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6588,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3500:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3499:23:14"
                },
                "scope": 6592,
                "src": "3414:109:14",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 6593,
            "src": "26:3499:14"
          }
        ],
        "src": "0:3526:14"
      }
    },
    "contracts/interfaces/IMarXDEXV2Router02.sol": {
      "id": 15,
      "AST": {
        "absolutePath": "contracts/interfaces/IMarXDEXV2Router02.sol",
        "exportedSymbols": {
          "IMarXDEXV2Router02": [
            6680
          ]
        },
        "id": 6681,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6594,
            "literals": [
              "solidity",
              ">=",
              "0.6",
              ".2"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:15"
          },
          {
            "absolutePath": "contracts/interfaces/IMarXDEXV2Router01.sol",
            "file": "./IMarXDEXV2Router01.sol",
            "id": 6595,
            "nodeType": "ImportDirective",
            "scope": 6681,
            "sourceUnit": 6593,
            "src": "26:34:15",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 6596,
                  "name": "IMarXDEXV2Router01",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6592,
                  "src": "94:18:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                    "typeString": "contract IMarXDEXV2Router01"
                  }
                },
                "id": 6597,
                "nodeType": "InheritanceSpecifier",
                "src": "94:18:15"
              }
            ],
            "contractDependencies": [
              6592
            ],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 6680,
            "linearizedBaseContracts": [
              6680,
              6592
            ],
            "name": "IMarXDEXV2Router02",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "functionSelector": "af2979eb",
                "id": 6614,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETHSupportingFeeOnTransferTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6610,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6599,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6614,
                      "src": "185:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6598,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "185:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6601,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6614,
                      "src": "208:14:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6600,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "208:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6603,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6614,
                      "src": "232:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6602,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "232:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6605,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6614,
                      "src": "261:17:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6604,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "261:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6607,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6614,
                      "src": "288:10:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6606,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "288:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6609,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6614,
                      "src": "308:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6608,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "308:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "175:152:15"
                },
                "returnParameters": {
                  "id": 6613,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6612,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6614,
                      "src": "346:14:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6611,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "346:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "345:16:15"
                },
                "scope": 6680,
                "src": "119:243:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "5b0d5984",
                "id": 6639,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6635,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6616,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6639,
                      "src": "443:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6615,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "443:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6618,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6639,
                      "src": "466:14:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6617,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "466:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6620,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6639,
                      "src": "490:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6619,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "490:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6622,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6639,
                      "src": "519:17:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6621,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "519:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6624,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6639,
                      "src": "546:10:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6623,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "546:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6626,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6639,
                      "src": "566:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6625,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "566:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6628,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6639,
                      "src": "589:15:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6627,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "589:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6630,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6639,
                      "src": "606:7:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 6629,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "606:5:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6632,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6639,
                      "src": "615:9:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6631,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "615:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6634,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6639,
                      "src": "626:9:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6633,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "626:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "433:208:15"
                },
                "returnParameters": {
                  "id": 6638,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6637,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6639,
                      "src": "660:14:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6636,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "660:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "659:16:15"
                },
                "scope": 6680,
                "src": "367:309:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "5c11d795",
                "id": 6653,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6651,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6641,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6653,
                      "src": "754:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6640,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "754:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6643,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6653,
                      "src": "777:17:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6642,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "777:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6646,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6653,
                      "src": "804:23:15",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6644,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "804:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6645,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "804:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6648,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6653,
                      "src": "837:10:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6647,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "837:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6650,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6653,
                      "src": "857:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6649,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "857:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "744:132:15"
                },
                "returnParameters": {
                  "id": 6652,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "885:0:15"
                },
                "scope": 6680,
                "src": "682:204:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "b6f9de95",
                "id": 6665,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactETHForTokensSupportingFeeOnTransferTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6663,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6655,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6665,
                      "src": "960:17:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6654,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "960:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6658,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6665,
                      "src": "987:23:15",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6656,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "987:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6657,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "987:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6660,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6665,
                      "src": "1020:10:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6659,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1020:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6662,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6665,
                      "src": "1040:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6661,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1040:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "950:109:15"
                },
                "returnParameters": {
                  "id": 6664,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1076:0:15"
                },
                "scope": 6680,
                "src": "891:186:15",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "791ac947",
                "id": 6679,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactTokensForETHSupportingFeeOnTransferTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6677,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6667,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6679,
                      "src": "1151:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6666,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1151:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6669,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6679,
                      "src": "1174:17:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6668,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1174:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6672,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6679,
                      "src": "1201:23:15",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6670,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1201:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6671,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "1201:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6674,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6679,
                      "src": "1234:10:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6673,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1234:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6676,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6679,
                      "src": "1254:13:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6675,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1254:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1141:132:15"
                },
                "returnParameters": {
                  "id": 6678,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1282:0:15"
                },
                "scope": 6680,
                "src": "1082:201:15",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 6681,
            "src": "62:1223:15"
          }
        ],
        "src": "0:1286:15"
      }
    },
    "contracts/interfaces/IWETH.sol": {
      "id": 16,
      "AST": {
        "absolutePath": "contracts/interfaces/IWETH.sol",
        "exportedSymbols": {
          "IWETH": [
            6700
          ]
        },
        "id": 6701,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6682,
            "literals": [
              "solidity",
              ">=",
              "0.5",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:16"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 6700,
            "linearizedBaseContracts": [
              6700
            ],
            "name": "IWETH",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d0e30db0",
                "id": 6685,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "deposit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6683,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "64:2:16"
                },
                "returnParameters": {
                  "id": 6684,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "83:0:16"
                },
                "scope": 6700,
                "src": "48:36:16",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 6694,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6690,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6687,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6694,
                      "src": "107:10:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6686,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "107:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6689,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6694,
                      "src": "119:10:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6688,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "119:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "106:24:16"
                },
                "returnParameters": {
                  "id": 6693,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6692,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6694,
                      "src": "149:4:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 6691,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "149:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "148:6:16"
                },
                "scope": 6700,
                "src": "89:66:16",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "2e1a7d4d",
                "id": 6699,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "withdraw",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6697,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6696,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6699,
                      "src": "178:4:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6695,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "178:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "177:6:16"
                },
                "returnParameters": {
                  "id": 6698,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "192:0:16"
                },
                "scope": 6700,
                "src": "160:33:16",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 6701,
            "src": "26:169:16"
          }
        ],
        "src": "0:196:16"
      }
    },
    "contracts/libraries/MarXDEXV2Library.sol": {
      "id": 17,
      "AST": {
        "absolutePath": "contracts/libraries/MarXDEXV2Library.sol",
        "exportedSymbols": {
          "MarXDEXV2Library": [
            7172
          ]
        },
        "id": 7173,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6702,
            "literals": [
              "solidity",
              ">=",
              "0.5",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:17"
          },
          {
            "absolutePath": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Pair.sol",
            "file": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Pair.sol",
            "id": 6703,
            "nodeType": "ImportDirective",
            "scope": 7173,
            "sourceUnit": 1796,
            "src": "26:76:17",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/SafeMath.sol",
            "file": "./SafeMath.sol",
            "id": 6704,
            "nodeType": "ImportDirective",
            "scope": 7173,
            "sourceUnit": 7821,
            "src": "104:24:17",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 7172,
            "linearizedBaseContracts": [
              7172
            ],
            "name": "MarXDEXV2Library",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 6707,
                "libraryName": {
                  "contractScope": null,
                  "id": 6705,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 7820,
                  "src": "167:8:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$7820",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "161:24:17",
                "typeName": {
                  "id": 6706,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "180:4:17",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "body": {
                  "id": 6750,
                  "nodeType": "Block",
                  "src": "398:238:17",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 6721,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6719,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6709,
                              "src": "416:6:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6720,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6711,
                              "src": "426:6:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "416:16:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d61725844455856324c6962726172793a204944454e544943414c5f414444524553534553",
                            "id": 6722,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "434:39:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_86f25c782ccbdbf81d6996ad9fa4f6db32b766abd9915cc693262d183c454039",
                              "typeString": "literal_string \"MarXDEXV2Library: IDENTICAL_ADDRESSES\""
                            },
                            "value": "MarXDEXV2Library: IDENTICAL_ADDRESSES"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_86f25c782ccbdbf81d6996ad9fa4f6db32b766abd9915cc693262d183c454039",
                              "typeString": "literal_string \"MarXDEXV2Library: IDENTICAL_ADDRESSES\""
                            }
                          ],
                          "id": 6718,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "408:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6723,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "408:66:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6724,
                      "nodeType": "ExpressionStatement",
                      "src": "408:66:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6738,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 6725,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6714,
                              "src": "485:6:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6726,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6716,
                              "src": "493:6:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "id": 6727,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "484:16:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                            "typeString": "tuple(address,address)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 6730,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6728,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6709,
                              "src": "503:6:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6729,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6711,
                              "src": "512:6:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "503:15:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 6734,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6711,
                                "src": "541:6:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 6735,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6709,
                                "src": "549:6:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "id": 6736,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "540:16:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                              "typeString": "tuple(address,address)"
                            }
                          },
                          "id": 6737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "503:53:17",
                          "trueExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 6731,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6709,
                                "src": "522:6:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 6732,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6711,
                                "src": "530:6:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "id": 6733,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "521:16:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                              "typeString": "tuple(address,address)"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                            "typeString": "tuple(address,address)"
                          }
                        },
                        "src": "484:72:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6739,
                      "nodeType": "ExpressionStatement",
                      "src": "484:72:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 6746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6741,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6714,
                              "src": "574:6:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 6744,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "592:1:17",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 6743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "584:7:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6742,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "584:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 6745,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "584:10:17",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "574:20:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d61725844455856324c6962726172793a205a45524f5f41444452455353",
                            "id": 6747,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "596:32:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_aa32292f364e0f292cebb5c8e320de25422949a37496322bf89a3f67c933a81e",
                              "typeString": "literal_string \"MarXDEXV2Library: ZERO_ADDRESS\""
                            },
                            "value": "MarXDEXV2Library: ZERO_ADDRESS"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_aa32292f364e0f292cebb5c8e320de25422949a37496322bf89a3f67c933a81e",
                              "typeString": "literal_string \"MarXDEXV2Library: ZERO_ADDRESS\""
                            }
                          ],
                          "id": 6740,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "566:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6748,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "566:63:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6749,
                      "nodeType": "ExpressionStatement",
                      "src": "566:63:17"
                    }
                  ]
                },
                "documentation": null,
                "id": 6751,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sortTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6712,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6709,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6751,
                      "src": "311:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6708,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "311:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6711,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6751,
                      "src": "327:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6710,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "327:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "310:32:17"
                },
                "returnParameters": {
                  "id": 6717,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6714,
                      "mutability": "mutable",
                      "name": "token0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6751,
                      "src": "366:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6713,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "366:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6716,
                      "mutability": "mutable",
                      "name": "token1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6751,
                      "src": "382:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6715,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "382:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "365:32:17"
                },
                "scope": 7172,
                "src": "291:345:17",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6795,
                  "nodeType": "Block",
                  "src": "828:367:17",
                  "statements": [
                    {
                      "assignments": [
                        6763,
                        6765
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6763,
                          "mutability": "mutable",
                          "name": "token0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6795,
                          "src": "839:14:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 6762,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "839:7:17",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 6765,
                          "mutability": "mutable",
                          "name": "token1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6795,
                          "src": "855:14:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 6764,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "855:7:17",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6770,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6767,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6755,
                            "src": "884:6:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6768,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6757,
                            "src": "892:6:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6766,
                          "name": "sortTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6751,
                          "src": "873:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                            "typeString": "function (address,address) pure returns (address,address)"
                          }
                        },
                        "id": 6769,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "873:26:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                          "typeString": "tuple(address,address)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "838:61:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6793,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 6771,
                          "name": "pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6760,
                          "src": "909:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "ff",
                                          "id": 6779,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "973:7:17",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9",
                                            "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"
                                          },
                                          "value": null
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 6780,
                                          "name": "factory",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6753,
                                          "src": "998:7:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 6784,
                                                  "name": "token0",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6763,
                                                  "src": "1050:6:17",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "id": 6785,
                                                  "name": "token1",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6765,
                                                  "src": "1058:6:17",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 6782,
                                                  "name": "abi",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": -1,
                                                  "src": "1033:3:17",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_abi",
                                                    "typeString": "abi"
                                                  }
                                                },
                                                "id": 6783,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberName": "encodePacked",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": null,
                                                "src": "1033:16:17",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                  "typeString": "function () pure returns (bytes memory)"
                                                }
                                              },
                                              "id": 6786,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "1033:32:17",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            ],
                                            "id": 6781,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -8,
                                            "src": "1023:9:17",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                              "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                          },
                                          "id": 6787,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1023:43:17",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "236595447338c75b512d89a54e3b5160e3a38c8ffe13f0e88c634ca037665806",
                                          "id": 6788,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1084:69:17",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_3ea5fdab3b86dd5484ede1d426e15aebe11d6fd4efe70d5c40986b2547f100cc",
                                            "typeString": "literal_string (contains invalid UTF-8 sequence at position 2)"
                                          },
                                          "value": null
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9",
                                            "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_3ea5fdab3b86dd5484ede1d426e15aebe11d6fd4efe70d5c40986b2547f100cc",
                                            "typeString": "literal_string (contains invalid UTF-8 sequence at position 2)"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 6777,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "939:3:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 6778,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "939:16:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 6789,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "939:246:17",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 6776,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "929:9:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 6790,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "929:257:17",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 6775,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "924:4:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 6774,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "924:4:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 6791,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "924:263:17",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6773,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "916:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 6772,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "916:7:17",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 6792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "916:272:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "909:279:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 6794,
                      "nodeType": "ExpressionStatement",
                      "src": "909:279:17"
                    }
                  ]
                },
                "documentation": null,
                "id": 6796,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "pairFor",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6758,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6753,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6796,
                      "src": "742:15:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6752,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "742:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6755,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6796,
                      "src": "759:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6754,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "759:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6757,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6796,
                      "src": "775:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6756,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "775:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "741:49:17"
                },
                "returnParameters": {
                  "id": 6761,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6760,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6796,
                      "src": "814:12:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6759,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "814:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "813:14:17"
                },
                "scope": 7172,
                "src": "725:470:17",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6845,
                  "nodeType": "Block",
                  "src": "1373:264:17",
                  "statements": [
                    {
                      "assignments": [
                        6810,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6810,
                          "mutability": "mutable",
                          "name": "token0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6845,
                          "src": "1384:14:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 6809,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1384:7:17",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 6815,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6812,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6800,
                            "src": "1414:6:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6813,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6802,
                            "src": "1422:6:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6811,
                          "name": "sortTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6751,
                          "src": "1403:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$",
                            "typeString": "function (address,address) pure returns (address,address)"
                          }
                        },
                        "id": 6814,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1403:26:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                          "typeString": "tuple(address,address)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1383:46:17"
                    },
                    {
                      "assignments": [
                        6817,
                        6819,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6817,
                          "mutability": "mutable",
                          "name": "reserve0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6845,
                          "src": "1440:13:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6816,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1440:4:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 6819,
                          "mutability": "mutable",
                          "name": "reserve1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6845,
                          "src": "1455:13:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6818,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1455:4:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 6829,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6822,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6798,
                                    "src": "1496:7:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 6823,
                                    "name": "tokenA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6800,
                                    "src": "1505:6:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 6824,
                                    "name": "tokenB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6802,
                                    "src": "1513:6:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 6821,
                                  "name": "pairFor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6796,
                                  "src": "1488:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address) pure returns (address)"
                                  }
                                },
                                "id": 6825,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1488:32:17",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 6820,
                              "name": "IMarXDEXV2Pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1795,
                              "src": "1473:14:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                "typeString": "type(contract IMarXDEXV2Pair)"
                              }
                            },
                            "id": 6826,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1473:48:17",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                              "typeString": "contract IMarXDEXV2Pair"
                            }
                          },
                          "id": 6827,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getReserves",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1737,
                          "src": "1473:60:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "function () view external returns (uint112,uint112,uint32)"
                          }
                        },
                        "id": 6828,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1473:62:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                          "typeString": "tuple(uint112,uint112,uint32)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1439:96:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6843,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 6830,
                              "name": "reserveA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6805,
                              "src": "1546:8:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6831,
                              "name": "reserveB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6807,
                              "src": "1556:8:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 6832,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "1545:20:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 6835,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6833,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6800,
                              "src": "1568:6:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6834,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6810,
                              "src": "1578:6:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1568:16:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 6839,
                                "name": "reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6819,
                                "src": "1611:8:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 6840,
                                "name": "reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6817,
                                "src": "1621:8:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 6841,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1610:20:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "id": 6842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "1568:62:17",
                          "trueExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 6836,
                                "name": "reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6817,
                                "src": "1588:8:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 6837,
                                "name": "reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6819,
                                "src": "1598:8:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 6838,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1587:20:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "1545:85:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6844,
                      "nodeType": "ExpressionStatement",
                      "src": "1545:85:17"
                    }
                  ]
                },
                "documentation": null,
                "id": 6846,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getReserves",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6803,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6798,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6846,
                      "src": "1271:15:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6797,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1271:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6800,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6846,
                      "src": "1288:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6799,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1288:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6802,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6846,
                      "src": "1304:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6801,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1304:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1270:49:17"
                },
                "returnParameters": {
                  "id": 6808,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6805,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6846,
                      "src": "1343:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6804,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1343:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6807,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6846,
                      "src": "1358:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6806,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1358:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1342:30:17"
                },
                "scope": 7172,
                "src": "1250:387:17",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6884,
                  "nodeType": "Block",
                  "src": "1843:221:17",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6860,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6858,
                              "name": "amountA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6848,
                              "src": "1861:7:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6859,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1871:1:17",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1861:11:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d61725844455856324c6962726172793a20494e53554646494349454e545f414d4f554e54",
                            "id": 6861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1874:39:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_89214f7d896f4450254019ed8da47271727fc324d6192ad78d7b671d8a106008",
                              "typeString": "literal_string \"MarXDEXV2Library: INSUFFICIENT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Library: INSUFFICIENT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_89214f7d896f4450254019ed8da47271727fc324d6192ad78d7b671d8a106008",
                              "typeString": "literal_string \"MarXDEXV2Library: INSUFFICIENT_AMOUNT\""
                            }
                          ],
                          "id": 6857,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1853:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6862,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1853:61:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6863,
                      "nodeType": "ExpressionStatement",
                      "src": "1853:61:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 6871,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6865,
                                "name": "reserveA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6850,
                                "src": "1932:8:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6866,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1943:1:17",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1932:12:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6870,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6868,
                                "name": "reserveB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6852,
                                "src": "1948:8:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6869,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1959:1:17",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1948:12:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1932:28:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d61725844455856324c6962726172793a20494e53554646494349454e545f4c4951554944495459",
                            "id": 6872,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1962:42:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d8b6dc4802c26de8f2e823c7a8ab5eadda3d1105c7d4be893dc7b6878f0d8abd",
                              "typeString": "literal_string \"MarXDEXV2Library: INSUFFICIENT_LIQUIDITY\""
                            },
                            "value": "MarXDEXV2Library: INSUFFICIENT_LIQUIDITY"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d8b6dc4802c26de8f2e823c7a8ab5eadda3d1105c7d4be893dc7b6878f0d8abd",
                              "typeString": "literal_string \"MarXDEXV2Library: INSUFFICIENT_LIQUIDITY\""
                            }
                          ],
                          "id": 6864,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1924:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6873,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1924:81:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6874,
                      "nodeType": "ExpressionStatement",
                      "src": "1924:81:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6882,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 6875,
                          "name": "amountB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6855,
                          "src": "2015:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6878,
                                "name": "reserveB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6852,
                                "src": "2037:8:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 6876,
                                "name": "amountA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6848,
                                "src": "2025:7:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6877,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7819,
                              "src": "2025:11:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6879,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2025:21:17",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 6880,
                            "name": "reserveA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6850,
                            "src": "2049:8:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2025:32:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2015:42:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6883,
                      "nodeType": "ExpressionStatement",
                      "src": "2015:42:17"
                    }
                  ]
                },
                "documentation": null,
                "id": 6885,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "quote",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6853,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6848,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6885,
                      "src": "1762:12:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6847,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1762:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6850,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6885,
                      "src": "1776:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6849,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1776:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6852,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6885,
                      "src": "1791:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6851,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1791:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1761:44:17"
                },
                "returnParameters": {
                  "id": 6856,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6855,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6885,
                      "src": "1829:12:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6854,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1829:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1828:14:17"
                },
                "scope": 7172,
                "src": "1747:317:17",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6944,
                  "nodeType": "Block",
                  "src": "2292:401:17",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6899,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6897,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6887,
                              "src": "2310:8:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6898,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2321:1:17",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2310:12:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d61725844455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54",
                            "id": 6900,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2324:45:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ac78298f66ed835994d3f5ebe08b68ea236074b68acafb07fda6c4fbf83c3e13",
                              "typeString": "literal_string \"MarXDEXV2Library: INSUFFICIENT_INPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Library: INSUFFICIENT_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_ac78298f66ed835994d3f5ebe08b68ea236074b68acafb07fda6c4fbf83c3e13",
                              "typeString": "literal_string \"MarXDEXV2Library: INSUFFICIENT_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 6896,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2302:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6901,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2302:68:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6902,
                      "nodeType": "ExpressionStatement",
                      "src": "2302:68:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 6910,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6904,
                                "name": "reserveIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6889,
                                "src": "2388:9:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2400:1:17",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2388:13:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6909,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6907,
                                "name": "reserveOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6891,
                                "src": "2405:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6908,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2418:1:17",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2405:14:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2388:31:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d61725844455856324c6962726172793a20494e53554646494349454e545f4c4951554944495459",
                            "id": 6911,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2421:42:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d8b6dc4802c26de8f2e823c7a8ab5eadda3d1105c7d4be893dc7b6878f0d8abd",
                              "typeString": "literal_string \"MarXDEXV2Library: INSUFFICIENT_LIQUIDITY\""
                            },
                            "value": "MarXDEXV2Library: INSUFFICIENT_LIQUIDITY"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d8b6dc4802c26de8f2e823c7a8ab5eadda3d1105c7d4be893dc7b6878f0d8abd",
                              "typeString": "literal_string \"MarXDEXV2Library: INSUFFICIENT_LIQUIDITY\""
                            }
                          ],
                          "id": 6903,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2380:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6912,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2380:84:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6913,
                      "nodeType": "ExpressionStatement",
                      "src": "2380:84:17"
                    },
                    {
                      "assignments": [
                        6915
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6915,
                          "mutability": "mutable",
                          "name": "amountInWithFee",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6944,
                          "src": "2474:20:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6914,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2474:4:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6920,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "393937",
                            "id": 6918,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2510:3:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_997_by_1",
                              "typeString": "int_const 997"
                            },
                            "value": "997"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_997_by_1",
                              "typeString": "int_const 997"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 6916,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6887,
                            "src": "2497:8:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7819,
                          "src": "2497:12:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6919,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2497:17:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2474:40:17"
                    },
                    {
                      "assignments": [
                        6922
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6922,
                          "mutability": "mutable",
                          "name": "numerator",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6944,
                          "src": "2524:14:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6921,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2524:4:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6927,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6925,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6891,
                            "src": "2561:10:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 6923,
                            "name": "amountInWithFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6915,
                            "src": "2541:15:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7819,
                          "src": "2541:19:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6926,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2541:31:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2524:48:17"
                    },
                    {
                      "assignments": [
                        6929
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6929,
                          "mutability": "mutable",
                          "name": "denominator",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6944,
                          "src": "2582:16:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6928,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2582:4:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6937,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6935,
                            "name": "amountInWithFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6915,
                            "src": "2625:15:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31303030",
                                "id": 6932,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2615:4:17",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                },
                                "value": "1000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 6930,
                                "name": "reserveIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6889,
                                "src": "2601:9:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6931,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7819,
                              "src": "2601:13:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6933,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2601:19:17",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7769,
                          "src": "2601:23:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6936,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2601:40:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2582:59:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6942,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 6938,
                          "name": "amountOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6894,
                          "src": "2651:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6939,
                            "name": "numerator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6922,
                            "src": "2663:9:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 6940,
                            "name": "denominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6929,
                            "src": "2675:11:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2663:23:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2651:35:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6943,
                      "nodeType": "ExpressionStatement",
                      "src": "2651:35:17"
                    }
                  ]
                },
                "documentation": null,
                "id": 6945,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountOut",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6892,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6887,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6945,
                      "src": "2205:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6886,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2205:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6889,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6945,
                      "src": "2220:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6888,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2220:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6891,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6945,
                      "src": "2236:15:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6890,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2236:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2204:48:17"
                },
                "returnParameters": {
                  "id": 6895,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6894,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6945,
                      "src": "2276:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6893,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2276:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2275:16:17"
                },
                "scope": 7172,
                "src": "2183:510:17",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 7004,
                  "nodeType": "Block",
                  "src": "2919:358:17",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6959,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6957,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6947,
                              "src": "2937:9:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6958,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2949:1:17",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2937:13:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d61725844455856324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 6960,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2952:46:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_152fee56b23c068b9c9b7875f22d55e60fcdd5636e0aa2e79b1ec185aa191b21",
                              "typeString": "literal_string \"MarXDEXV2Library: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "MarXDEXV2Library: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_152fee56b23c068b9c9b7875f22d55e60fcdd5636e0aa2e79b1ec185aa191b21",
                              "typeString": "literal_string \"MarXDEXV2Library: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 6956,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2929:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6961,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2929:70:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6962,
                      "nodeType": "ExpressionStatement",
                      "src": "2929:70:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 6970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6966,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6964,
                                "name": "reserveIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6949,
                                "src": "3017:9:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6965,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3029:1:17",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3017:13:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6969,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6967,
                                "name": "reserveOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6951,
                                "src": "3034:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6968,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3047:1:17",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3034:14:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "3017:31:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d61725844455856324c6962726172793a20494e53554646494349454e545f4c4951554944495459",
                            "id": 6971,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3050:42:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d8b6dc4802c26de8f2e823c7a8ab5eadda3d1105c7d4be893dc7b6878f0d8abd",
                              "typeString": "literal_string \"MarXDEXV2Library: INSUFFICIENT_LIQUIDITY\""
                            },
                            "value": "MarXDEXV2Library: INSUFFICIENT_LIQUIDITY"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d8b6dc4802c26de8f2e823c7a8ab5eadda3d1105c7d4be893dc7b6878f0d8abd",
                              "typeString": "literal_string \"MarXDEXV2Library: INSUFFICIENT_LIQUIDITY\""
                            }
                          ],
                          "id": 6963,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3009:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6972,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3009:84:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6973,
                      "nodeType": "ExpressionStatement",
                      "src": "3009:84:17"
                    },
                    {
                      "assignments": [
                        6975
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6975,
                          "mutability": "mutable",
                          "name": "numerator",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7004,
                          "src": "3103:14:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6974,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "3103:4:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6983,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "31303030",
                            "id": 6981,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3149:4:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1000_by_1",
                              "typeString": "int_const 1000"
                            },
                            "value": "1000"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1000_by_1",
                              "typeString": "int_const 1000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6978,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6947,
                                "src": "3134:9:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 6976,
                                "name": "reserveIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6949,
                                "src": "3120:9:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6977,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7819,
                              "src": "3120:13:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6979,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3120:24:17",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7819,
                          "src": "3120:28:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6982,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3120:34:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3103:51:17"
                    },
                    {
                      "assignments": [
                        6985
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6985,
                          "mutability": "mutable",
                          "name": "denominator",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7004,
                          "src": "3164:16:17",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6984,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "3164:4:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6993,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "393937",
                            "id": 6991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3213:3:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_997_by_1",
                              "typeString": "int_const 997"
                            },
                            "value": "997"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_997_by_1",
                              "typeString": "int_const 997"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6988,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6947,
                                "src": "3198:9:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 6986,
                                "name": "reserveOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6951,
                                "src": "3183:10:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6987,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7791,
                              "src": "3183:14:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6989,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3183:25:17",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7819,
                          "src": "3183:29:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 6992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3183:34:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3164:53:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 6994,
                          "name": "amountIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6954,
                          "src": "3227:8:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 7000,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3268:1:17",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6997,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 6995,
                                    "name": "numerator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6975,
                                    "src": "3239:9:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 6996,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6985,
                                    "src": "3251:11:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3239:23:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 6998,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3238:25:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7769,
                            "src": "3238:29:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7001,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3238:32:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3227:43:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7003,
                      "nodeType": "ExpressionStatement",
                      "src": "3227:43:17"
                    }
                  ]
                },
                "documentation": null,
                "id": 7005,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountIn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6952,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6947,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7005,
                      "src": "2832:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6946,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2832:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6949,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7005,
                      "src": "2848:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6948,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2848:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6951,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7005,
                      "src": "2864:15:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6950,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2864:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2831:49:17"
                },
                "returnParameters": {
                  "id": 6955,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6954,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7005,
                      "src": "2904:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6953,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2904:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2903:15:17"
                },
                "scope": 7172,
                "src": "2811:466:17",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 7085,
                  "nodeType": "Block",
                  "src": "3480:379:17",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7019,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7012,
                                "src": "3498:4:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 7020,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3498:11:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 7021,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3513:1:17",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "3498:16:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d61725844455856324c6962726172793a20494e56414c49445f50415448",
                            "id": 7023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3516:32:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_01d6e51a69c8070852458977c583e22ecf34f2962e2acec9a03be9430218510d",
                              "typeString": "literal_string \"MarXDEXV2Library: INVALID_PATH\""
                            },
                            "value": "MarXDEXV2Library: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_01d6e51a69c8070852458977c583e22ecf34f2962e2acec9a03be9430218510d",
                              "typeString": "literal_string \"MarXDEXV2Library: INVALID_PATH\""
                            }
                          ],
                          "id": 7018,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3490:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 7024,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3490:59:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7025,
                      "nodeType": "ExpressionStatement",
                      "src": "3490:59:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7026,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7016,
                          "src": "3559:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7030,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7012,
                                "src": "3580:4:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 7031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3580:11:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7029,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3569:10:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 7027,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "3573:4:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7028,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "3573:6:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 7032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3569:23:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "3559:33:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 7034,
                      "nodeType": "ExpressionStatement",
                      "src": "3559:33:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7039,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7035,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7016,
                            "src": "3602:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 7037,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7036,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3610:1:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "3602:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7038,
                          "name": "amountIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7009,
                          "src": "3615:8:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3602:21:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7040,
                      "nodeType": "ExpressionStatement",
                      "src": "3602:21:17"
                    },
                    {
                      "body": {
                        "id": 7083,
                        "nodeType": "Block",
                        "src": "3672:181:17",
                        "statements": [
                          {
                            "assignments": [
                              7054,
                              7056
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7054,
                                "mutability": "mutable",
                                "name": "reserveIn",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7083,
                                "src": "3687:14:17",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7053,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3687:4:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 7056,
                                "mutability": "mutable",
                                "name": "reserveOut",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7083,
                                "src": "3703:15:17",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7055,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3703:4:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7068,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7058,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7007,
                                  "src": "3734:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 7059,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7012,
                                    "src": "3743:4:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 7061,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 7060,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7042,
                                    "src": "3748:1:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3743:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 7062,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7012,
                                    "src": "3752:4:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 7066,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 7065,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 7063,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7042,
                                      "src": "3757:1:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 7064,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3761:1:17",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "3757:5:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3752:11:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 7057,
                                "name": "getReserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6846,
                                "src": "3722:11:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (address,address,address) view returns (uint256,uint256)"
                                }
                              },
                              "id": 7067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3722:42:17",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3686:78:17"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7081,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 7069,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7016,
                                  "src": "3778:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 7073,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7072,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 7070,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7042,
                                    "src": "3786:1:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 7071,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3790:1:17",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "3786:5:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "3778:14:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 7075,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7016,
                                      "src": "3808:7:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 7077,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 7076,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7042,
                                      "src": "3816:1:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3808:10:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7078,
                                    "name": "reserveIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7054,
                                    "src": "3820:9:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7079,
                                    "name": "reserveOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7056,
                                    "src": "3831:10:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 7074,
                                  "name": "getAmountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6945,
                                  "src": "3795:12:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 7080,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3795:47:17",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3778:64:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7082,
                            "nodeType": "ExpressionStatement",
                            "src": "3778:64:17"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7049,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7044,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7042,
                          "src": "3646:1:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7045,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7012,
                              "src": "3650:4:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 7046,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3650:11:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 7047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3664:1:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3650:15:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3646:19:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 7084,
                      "initializationExpression": {
                        "assignments": [
                          7042
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7042,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 7084,
                            "src": "3638:6:17",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7041,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "3638:4:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7043,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3638:6:17"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "3667:3:17",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 7050,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7042,
                            "src": "3667:1:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7052,
                        "nodeType": "ExpressionStatement",
                        "src": "3667:3:17"
                      },
                      "nodeType": "ForStatement",
                      "src": "3633:220:17"
                    }
                  ]
                },
                "documentation": null,
                "id": 7086,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountsOut",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7013,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7007,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7086,
                      "src": "3379:15:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7006,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3379:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7009,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7086,
                      "src": "3396:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7008,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3396:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7012,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7086,
                      "src": "3411:21:17",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7010,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3411:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7011,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3411:9:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3378:55:17"
                },
                "returnParameters": {
                  "id": 7017,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7016,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7086,
                      "src": "3457:21:17",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7014,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3457:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7015,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3457:6:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3456:23:17"
                },
                "scope": 7172,
                "src": "3356:503:17",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 7170,
                  "nodeType": "Block",
                  "src": "4061:400:17",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7103,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7100,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7093,
                                "src": "4079:4:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 7101,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4079:11:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 7102,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4094:1:17",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "4079:16:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d61725844455856324c6962726172793a20494e56414c49445f50415448",
                            "id": 7104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4097:32:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_01d6e51a69c8070852458977c583e22ecf34f2962e2acec9a03be9430218510d",
                              "typeString": "literal_string \"MarXDEXV2Library: INVALID_PATH\""
                            },
                            "value": "MarXDEXV2Library: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_01d6e51a69c8070852458977c583e22ecf34f2962e2acec9a03be9430218510d",
                              "typeString": "literal_string \"MarXDEXV2Library: INVALID_PATH\""
                            }
                          ],
                          "id": 7099,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4071:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 7105,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4071:59:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7106,
                      "nodeType": "ExpressionStatement",
                      "src": "4071:59:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7107,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7097,
                          "src": "4140:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7111,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7093,
                                "src": "4161:4:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 7112,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4161:11:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7110,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4150:10:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 7108,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "4154:4:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7109,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4154:6:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 7113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4150:23:17",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "4140:33:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 7115,
                      "nodeType": "ExpressionStatement",
                      "src": "4140:33:17"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7123,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7116,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7097,
                            "src": "4183:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 7121,
                          "indexExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7120,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7117,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7097,
                                "src": "4191:7:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 7118,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4191:14:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 7119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4208:1:17",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "4191:18:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "4183:27:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7122,
                          "name": "amountOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7090,
                          "src": "4213:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4183:39:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7124,
                      "nodeType": "ExpressionStatement",
                      "src": "4183:39:17"
                    },
                    {
                      "body": {
                        "id": 7168,
                        "nodeType": "Block",
                        "src": "4275:180:17",
                        "statements": [
                          {
                            "assignments": [
                              7139,
                              7141
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7139,
                                "mutability": "mutable",
                                "name": "reserveIn",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7168,
                                "src": "4290:14:17",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7138,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4290:4:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 7141,
                                "mutability": "mutable",
                                "name": "reserveOut",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7168,
                                "src": "4306:15:17",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7140,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4306:4:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7153,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7143,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7088,
                                  "src": "4337:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 7144,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7093,
                                    "src": "4346:4:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 7148,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 7147,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 7145,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7126,
                                      "src": "4351:1:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 7146,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4355:1:17",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "4351:5:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4346:11:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 7149,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7093,
                                    "src": "4359:4:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 7151,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 7150,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7126,
                                    "src": "4364:1:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4359:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 7142,
                                "name": "getReserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6846,
                                "src": "4325:11:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (address,address,address) view returns (uint256,uint256)"
                                }
                              },
                              "id": 7152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4325:42:17",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "4289:78:17"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 7154,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7097,
                                  "src": "4381:7:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 7158,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7157,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 7155,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7126,
                                    "src": "4389:1:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 7156,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4393:1:17",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "4389:5:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "4381:14:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 7160,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7097,
                                      "src": "4410:7:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 7162,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 7161,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7126,
                                      "src": "4418:1:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4410:10:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7163,
                                    "name": "reserveIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7139,
                                    "src": "4422:9:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7164,
                                    "name": "reserveOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7141,
                                    "src": "4433:10:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 7159,
                                  "name": "getAmountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7005,
                                  "src": "4398:11:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 7165,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4398:46:17",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4381:63:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7167,
                            "nodeType": "ExpressionStatement",
                            "src": "4381:63:17"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7134,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7132,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7126,
                          "src": "4263:1:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4267:1:17",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4263:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 7169,
                      "initializationExpression": {
                        "assignments": [
                          7126
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7126,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 7169,
                            "src": "4237:6:17",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7125,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "4237:4:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7131,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7127,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7093,
                              "src": "4246:4:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 7128,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4246:11:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 7129,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4260:1:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4246:15:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4237:24:17"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "--",
                          "prefix": false,
                          "src": "4270:3:17",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 7135,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7126,
                            "src": "4270:1:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7137,
                        "nodeType": "ExpressionStatement",
                        "src": "4270:3:17"
                      },
                      "nodeType": "ForStatement",
                      "src": "4232:223:17"
                    }
                  ]
                },
                "documentation": null,
                "id": 7171,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountsIn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7094,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7088,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7171,
                      "src": "3959:15:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7087,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3959:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7090,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7171,
                      "src": "3976:14:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7089,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3976:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7093,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7171,
                      "src": "3992:21:17",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7091,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3992:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7092,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3992:9:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3958:56:17"
                },
                "returnParameters": {
                  "id": 7098,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7097,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7171,
                      "src": "4038:21:17",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 7095,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4038:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7096,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4038:6:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4037:23:17"
                },
                "scope": 7172,
                "src": "3937:524:17",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 7173,
            "src": "130:4333:17"
          }
        ],
        "src": "0:4464:17"
      }
    },
    "contracts/libraries/MarXDEXV2LiquidityMathLibrary.sol": {
      "id": 18,
      "AST": {
        "absolutePath": "contracts/libraries/MarXDEXV2LiquidityMathLibrary.sol",
        "exportedSymbols": {
          "MarXDEXV2LiquidityMathLibrary": [
            7638
          ]
        },
        "id": 7639,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 7174,
            "literals": [
              "solidity",
              ">=",
              "0.5",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:18"
          },
          {
            "absolutePath": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Pair.sol",
            "file": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Pair.sol",
            "id": 7175,
            "nodeType": "ImportDirective",
            "scope": 7639,
            "sourceUnit": 1796,
            "src": "26:76:18",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Factory.sol",
            "file": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Factory.sol",
            "id": 7176,
            "nodeType": "ImportDirective",
            "scope": 7639,
            "sourceUnit": 1554,
            "src": "103:79:18",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/Babylonian.sol",
            "file": "@marx-dex/marx-dex-lib/contracts/libraries/Babylonian.sol",
            "id": 7177,
            "nodeType": "ImportDirective",
            "scope": 7639,
            "sourceUnit": 203,
            "src": "183:67:18",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/FullMath.sol",
            "file": "@marx-dex/marx-dex-lib/contracts/libraries/FullMath.sol",
            "id": 7178,
            "nodeType": "ImportDirective",
            "scope": 7639,
            "sourceUnit": 1331,
            "src": "251:65:18",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/SafeMath.sol",
            "file": "./SafeMath.sol",
            "id": 7179,
            "nodeType": "ImportDirective",
            "scope": 7639,
            "sourceUnit": 7821,
            "src": "318:24:18",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/MarXDEXV2Library.sol",
            "file": "./MarXDEXV2Library.sol",
            "id": 7180,
            "nodeType": "ImportDirective",
            "scope": 7639,
            "sourceUnit": 7173,
            "src": "343:32:18",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 7638,
            "linearizedBaseContracts": [
              7638
            ],
            "name": "MarXDEXV2LiquidityMathLibrary",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 7183,
                "libraryName": {
                  "contractScope": null,
                  "id": 7181,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 7820,
                  "src": "578:8:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$7820",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "572:27:18",
                "typeName": {
                  "id": 7182,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "591:7:18",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "body": {
                  "id": 7272,
                  "nodeType": "Block",
                  "src": "894:689:18",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7207,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7198,
                          "name": "aToB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7194,
                          "src": "904:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7201,
                                "name": "reserveA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7189,
                                "src": "927:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 7202,
                                "name": "truePriceTokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7187,
                                "src": "937:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 7203,
                                "name": "reserveB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7191,
                                "src": "954:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 7199,
                                "name": "FullMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1330,
                                "src": "911:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_FullMath_$1330_$",
                                  "typeString": "type(library FullMath)"
                                }
                              },
                              "id": 7200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mulDiv",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1329,
                              "src": "911:15:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7204,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "911:52:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7205,
                            "name": "truePriceTokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7185,
                            "src": "966:15:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "911:70:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "904:77:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 7208,
                      "nodeType": "ExpressionStatement",
                      "src": "904:77:18"
                    },
                    {
                      "assignments": [
                        7210
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7210,
                          "mutability": "mutable",
                          "name": "invariant",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7272,
                          "src": "992:17:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7209,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "992:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7215,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7213,
                            "name": "reserveB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7191,
                            "src": "1025:8:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7211,
                            "name": "reserveA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7189,
                            "src": "1012:8:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7819,
                          "src": "1012:12:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 7214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1012:22:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "992:42:18"
                    },
                    {
                      "assignments": [
                        7217
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7217,
                          "mutability": "mutable",
                          "name": "leftSide",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7272,
                          "src": "1045:16:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7216,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1045:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7240,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31303030",
                                    "id": 7224,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1140:4:18",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    },
                                    "value": "1000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7222,
                                    "name": "invariant",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7210,
                                    "src": "1126:9:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7223,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7819,
                                  "src": "1126:13:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 7225,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1126:19:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "condition": {
                                  "argumentTypes": null,
                                  "id": 7226,
                                  "name": "aToB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7194,
                                  "src": "1163:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "argumentTypes": null,
                                  "id": 7228,
                                  "name": "truePriceTokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7187,
                                  "src": "1188:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7229,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "1163:40:18",
                                "trueExpression": {
                                  "argumentTypes": null,
                                  "id": 7227,
                                  "name": "truePriceTokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7185,
                                  "src": "1170:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "393937",
                                    "id": 7236,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1268:3:18",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_997_by_1",
                                      "typeString": "int_const 997"
                                    },
                                    "value": "997"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_997_by_1",
                                      "typeString": "int_const 997"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "condition": {
                                          "argumentTypes": null,
                                          "id": 7230,
                                          "name": "aToB",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7194,
                                          "src": "1222:4:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "argumentTypes": null,
                                          "id": 7232,
                                          "name": "truePriceTokenA",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7185,
                                          "src": "1247:15:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 7233,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "1222:40:18",
                                        "trueExpression": {
                                          "argumentTypes": null,
                                          "id": 7231,
                                          "name": "truePriceTokenB",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7187,
                                          "src": "1229:15:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 7234,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "1221:42:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7235,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7819,
                                  "src": "1221:46:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 7237,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1221:51:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 7220,
                                "name": "FullMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1330,
                                "src": "1093:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_FullMath_$1330_$",
                                  "typeString": "type(library FullMath)"
                                }
                              },
                              "id": 7221,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mulDiv",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1329,
                              "src": "1093:15:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7238,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1093:193:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7218,
                            "name": "Babylonian",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 202,
                            "src": "1064:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Babylonian_$202_$",
                              "typeString": "type(library Babylonian)"
                            }
                          },
                          "id": 7219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sqrt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 201,
                          "src": "1064:15:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) pure returns (uint256)"
                          }
                        },
                        "id": 7239,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1064:232:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1045:251:18"
                    },
                    {
                      "assignments": [
                        7242
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7242,
                          "mutability": "mutable",
                          "name": "rightSide",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7272,
                          "src": "1306:17:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7241,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1306:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7256,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "id": 7243,
                                "name": "aToB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7194,
                                "src": "1327:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31303030",
                                    "id": 7250,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1368:4:18",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    },
                                    "value": "1000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7248,
                                    "name": "reserveB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7191,
                                    "src": "1355:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7249,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7819,
                                  "src": "1355:12:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 7251,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1355:18:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7252,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "1327:46:18",
                              "trueExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "31303030",
                                    "id": 7246,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1347:4:18",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    },
                                    "value": "1000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1000_by_1",
                                      "typeString": "int_const 1000"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7244,
                                    "name": "reserveA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7189,
                                    "src": "1334:8:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7245,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7819,
                                  "src": "1334:12:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 7247,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1334:18:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 7253,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1326:48:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "393937",
                          "id": 7254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1377:3:18",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_997_by_1",
                            "typeString": "int_const 997"
                          },
                          "value": "997"
                        },
                        "src": "1326:54:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1306:74:18"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7259,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7257,
                          "name": "leftSide",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7217,
                          "src": "1395:8:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7258,
                          "name": "rightSide",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7242,
                          "src": "1406:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1395:20:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 7264,
                      "nodeType": "IfStatement",
                      "src": "1391:43:18",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 7260,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1425:5:18",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 7261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1432:1:18",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 7262,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1424:10:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                            "typeString": "tuple(bool,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 7197,
                        "id": 7263,
                        "nodeType": "Return",
                        "src": "1417:17:18"
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7270,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7265,
                          "name": "amountIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7196,
                          "src": "1542:8:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7268,
                              "name": "rightSide",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7242,
                              "src": "1566:9:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7266,
                              "name": "leftSide",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7217,
                              "src": "1553:8:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7267,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7791,
                            "src": "1553:12:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1553:23:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1542:34:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7271,
                      "nodeType": "ExpressionStatement",
                      "src": "1542:34:18"
                    }
                  ]
                },
                "documentation": null,
                "id": 7273,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "computeProfitMaximizingTrade",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7192,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7185,
                      "mutability": "mutable",
                      "name": "truePriceTokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7273,
                      "src": "727:23:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7184,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "727:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7187,
                      "mutability": "mutable",
                      "name": "truePriceTokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7273,
                      "src": "760:23:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7186,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "760:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7189,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7273,
                      "src": "793:16:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7188,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "793:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7191,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7273,
                      "src": "819:16:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7190,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "819:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "717:124:18"
                },
                "returnParameters": {
                  "id": 7197,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7194,
                      "mutability": "mutable",
                      "name": "aToB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7273,
                      "src": "865:9:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7193,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "865:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7196,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7273,
                      "src": "876:16:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7195,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "876:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "864:29:18"
                },
                "scope": 7638,
                "src": "680:903:18",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 7370,
                  "nodeType": "Block",
                  "src": "1959:922:18",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7299,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 7290,
                              "name": "reserveA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7286,
                              "src": "2016:8:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7291,
                              "name": "reserveB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7288,
                              "src": "2026:8:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 7292,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "2015:20:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7295,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7275,
                              "src": "2067:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7296,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7277,
                              "src": "2076:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7297,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7279,
                              "src": "2084:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7293,
                              "name": "MarXDEXV2Library",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7172,
                              "src": "2038:16:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                "typeString": "type(library MarXDEXV2Library)"
                              }
                            },
                            "id": 7294,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserves",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6846,
                            "src": "2038:28:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,address) view returns (uint256,uint256)"
                            }
                          },
                          "id": 7298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2038:53:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "2015:76:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7300,
                      "nodeType": "ExpressionStatement",
                      "src": "2015:76:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 7308,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7302,
                                "name": "reserveA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7286,
                                "src": "2110:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7303,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2121:1:18",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2110:12:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7305,
                                "name": "reserveB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7288,
                                "src": "2126:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7306,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2137:1:18",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2126:12:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2110:28:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4d61725844455856324172626974726167654c6962726172793a205a45524f5f504149525f5245534552564553",
                            "id": 7309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2140:47:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_82fb8414e628d948d409be319fdbc6ddd883e3765b7a4da98d23759e753f9dea",
                              "typeString": "literal_string \"MarXDEXV2ArbitrageLibrary: ZERO_PAIR_RESERVES\""
                            },
                            "value": "MarXDEXV2ArbitrageLibrary: ZERO_PAIR_RESERVES"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_82fb8414e628d948d409be319fdbc6ddd883e3765b7a4da98d23759e753f9dea",
                              "typeString": "literal_string \"MarXDEXV2ArbitrageLibrary: ZERO_PAIR_RESERVES\""
                            }
                          ],
                          "id": 7301,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2102:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 7310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2102:86:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7311,
                      "nodeType": "ExpressionStatement",
                      "src": "2102:86:18"
                    },
                    {
                      "assignments": [
                        7313,
                        7315
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7313,
                          "mutability": "mutable",
                          "name": "aToB",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7370,
                          "src": "2266:9:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 7312,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "2266:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 7315,
                          "mutability": "mutable",
                          "name": "amountIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7370,
                          "src": "2277:16:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7314,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2277:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7322,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7317,
                            "name": "truePriceTokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7281,
                            "src": "2326:15:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7318,
                            "name": "truePriceTokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7283,
                            "src": "2343:15:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7319,
                            "name": "reserveA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7286,
                            "src": "2360:8:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7320,
                            "name": "reserveB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7288,
                            "src": "2370:8:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 7316,
                          "name": "computeProfitMaximizingTrade",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7273,
                          "src": "2297:28:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256,uint256) pure returns (bool,uint256)"
                          }
                        },
                        "id": 7321,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2297:82:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                          "typeString": "tuple(bool,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2265:114:18"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7323,
                          "name": "amountIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7315,
                          "src": "2394:8:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2406:1:18",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2394:13:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 7331,
                      "nodeType": "IfStatement",
                      "src": "2390:71:18",
                      "trueBody": {
                        "id": 7330,
                        "nodeType": "Block",
                        "src": "2409:52:18",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 7326,
                                  "name": "reserveA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7286,
                                  "src": "2431:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 7327,
                                  "name": "reserveB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7288,
                                  "src": "2441:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 7328,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2430:20:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "functionReturnParameters": 7289,
                            "id": 7329,
                            "nodeType": "Return",
                            "src": "2423:27:18"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "id": 7332,
                        "name": "aToB",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7313,
                        "src": "2523:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 7368,
                        "nodeType": "Block",
                        "src": "2705:170:18",
                        "statements": [
                          {
                            "assignments": [
                              7352
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7352,
                                "mutability": "mutable",
                                "name": "amountOut",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7368,
                                "src": "2719:14:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7351,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2719:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7359,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7355,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7315,
                                  "src": "2766:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 7356,
                                  "name": "reserveB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7288,
                                  "src": "2776:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 7357,
                                  "name": "reserveA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7286,
                                  "src": "2786:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7353,
                                  "name": "MarXDEXV2Library",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7172,
                                  "src": "2736:16:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                    "typeString": "type(library MarXDEXV2Library)"
                                  }
                                },
                                "id": 7354,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAmountOut",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6945,
                                "src": "2736:29:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7358,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2736:59:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2719:76:18"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7362,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7360,
                                "name": "reserveB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7288,
                                "src": "2809:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 7361,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7315,
                                "src": "2821:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2809:20:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7363,
                            "nodeType": "ExpressionStatement",
                            "src": "2809:20:18"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7364,
                                "name": "reserveA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7286,
                                "src": "2843:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 7365,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7352,
                                "src": "2855:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2843:21:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7367,
                            "nodeType": "ExpressionStatement",
                            "src": "2843:21:18"
                          }
                        ]
                      },
                      "id": 7369,
                      "nodeType": "IfStatement",
                      "src": "2519:356:18",
                      "trueBody": {
                        "id": 7350,
                        "nodeType": "Block",
                        "src": "2529:170:18",
                        "statements": [
                          {
                            "assignments": [
                              7334
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7334,
                                "mutability": "mutable",
                                "name": "amountOut",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7350,
                                "src": "2543:14:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7333,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2543:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7341,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7337,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7315,
                                  "src": "2590:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 7338,
                                  "name": "reserveA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7286,
                                  "src": "2600:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 7339,
                                  "name": "reserveB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7288,
                                  "src": "2610:8:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7335,
                                  "name": "MarXDEXV2Library",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7172,
                                  "src": "2560:16:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                    "typeString": "type(library MarXDEXV2Library)"
                                  }
                                },
                                "id": 7336,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getAmountOut",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6945,
                                "src": "2560:29:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7340,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2560:59:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2543:76:18"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7342,
                                "name": "reserveA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7286,
                                "src": "2633:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 7343,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7315,
                                "src": "2645:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2633:20:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7345,
                            "nodeType": "ExpressionStatement",
                            "src": "2633:20:18"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7348,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7346,
                                "name": "reserveB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7288,
                                "src": "2667:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 7347,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7334,
                                "src": "2679:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2667:21:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7349,
                            "nodeType": "ExpressionStatement",
                            "src": "2667:21:18"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 7371,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getReservesAfterArbitrage",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7284,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7275,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7371,
                      "src": "1764:15:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7274,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1764:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7277,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7371,
                      "src": "1789:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7276,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1789:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7279,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7371,
                      "src": "1813:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7278,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1813:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7281,
                      "mutability": "mutable",
                      "name": "truePriceTokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7371,
                      "src": "1837:23:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7280,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1837:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7283,
                      "mutability": "mutable",
                      "name": "truePriceTokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7371,
                      "src": "1870:23:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7282,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1870:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1754:145:18"
                },
                "returnParameters": {
                  "id": 7289,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7286,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7371,
                      "src": "1923:16:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7285,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1923:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7288,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7371,
                      "src": "1941:16:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7287,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1941:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1922:36:18"
                },
                "scope": 7638,
                "src": "1720:1161:18",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 7470,
                  "nodeType": "Block",
                  "src": "3216:650:18",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7394,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7390,
                          "name": "feeOn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7381,
                          "src": "3230:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7391,
                            "name": "kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7383,
                            "src": "3239:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7392,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3247:1:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3239:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3230:18:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 7455,
                      "nodeType": "IfStatement",
                      "src": "3226:525:18",
                      "trueBody": {
                        "id": 7454,
                        "nodeType": "Block",
                        "src": "3250:501:18",
                        "statements": [
                          {
                            "assignments": [
                              7396
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7396,
                                "mutability": "mutable",
                                "name": "rootK",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7454,
                                "src": "3264:10:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7395,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3264:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7404,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7401,
                                      "name": "reservesB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7375,
                                      "src": "3307:9:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7399,
                                      "name": "reservesA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7373,
                                      "src": "3293:9:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7400,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7819,
                                    "src": "3293:13:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7402,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3293:24:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7397,
                                  "name": "Babylonian",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 202,
                                  "src": "3277:10:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Babylonian_$202_$",
                                    "typeString": "type(library Babylonian)"
                                  }
                                },
                                "id": 7398,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sqrt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 201,
                                "src": "3277:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7403,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3277:41:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3264:54:18"
                          },
                          {
                            "assignments": [
                              7406
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7406,
                                "mutability": "mutable",
                                "name": "rootKLast",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7454,
                                "src": "3332:14:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7405,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3332:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7411,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7409,
                                  "name": "kLast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7383,
                                  "src": "3365:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7407,
                                  "name": "Babylonian",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 202,
                                  "src": "3349:10:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Babylonian_$202_$",
                                    "typeString": "type(library Babylonian)"
                                  }
                                },
                                "id": 7408,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sqrt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 201,
                                "src": "3349:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3349:22:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3332:39:18"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7414,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7412,
                                "name": "rootK",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7396,
                                "src": "3389:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 7413,
                                "name": "rootKLast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7406,
                                "src": "3397:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3389:17:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 7453,
                            "nodeType": "IfStatement",
                            "src": "3385:356:18",
                            "trueBody": {
                              "id": 7452,
                              "nodeType": "Block",
                              "src": "3408:333:18",
                              "statements": [
                                {
                                  "assignments": [
                                    7416
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 7416,
                                      "mutability": "mutable",
                                      "name": "numerator1",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 7452,
                                      "src": "3426:15:18",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 7415,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3426:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 7418,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "id": 7417,
                                    "name": "totalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7377,
                                    "src": "3444:11:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "3426:29:18"
                                },
                                {
                                  "assignments": [
                                    7420
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 7420,
                                      "mutability": "mutable",
                                      "name": "numerator2",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 7452,
                                      "src": "3473:15:18",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 7419,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3473:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 7425,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 7423,
                                        "name": "rootKLast",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7406,
                                        "src": "3501:9:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7421,
                                        "name": "rootK",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7396,
                                        "src": "3491:5:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 7422,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7791,
                                      "src": "3491:9:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 7424,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3491:20:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "3473:38:18"
                                },
                                {
                                  "assignments": [
                                    7427
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 7427,
                                      "mutability": "mutable",
                                      "name": "denominator",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 7452,
                                      "src": "3529:16:18",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 7426,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3529:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 7435,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 7433,
                                        "name": "rootKLast",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7406,
                                        "src": "3565:9:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "35",
                                            "id": 7430,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3558:1:18",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_5_by_1",
                                              "typeString": "int_const 5"
                                            },
                                            "value": "5"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_5_by_1",
                                              "typeString": "int_const 5"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 7428,
                                            "name": "rootK",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7396,
                                            "src": "3548:5:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 7429,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 7819,
                                          "src": "3548:9:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 7431,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3548:12:18",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 7432,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "add",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7769,
                                      "src": "3548:16:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 7434,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3548:27:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "3529:46:18"
                                },
                                {
                                  "assignments": [
                                    7437
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 7437,
                                      "mutability": "mutable",
                                      "name": "feeLiquidity",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 7452,
                                      "src": "3593:17:18",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 7436,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3593:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 7444,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 7440,
                                        "name": "numerator1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7416,
                                        "src": "3629:10:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 7441,
                                        "name": "numerator2",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7420,
                                        "src": "3641:10:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 7442,
                                        "name": "denominator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7427,
                                        "src": "3653:11:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7438,
                                        "name": "FullMath",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1330,
                                        "src": "3613:8:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_FullMath_$1330_$",
                                          "typeString": "type(library FullMath)"
                                        }
                                      },
                                      "id": 7439,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mulDiv",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1329,
                                      "src": "3613:15:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 7443,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3613:52:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "3593:72:18"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7450,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 7445,
                                      "name": "totalSupply",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7377,
                                      "src": "3683:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 7448,
                                          "name": "feeLiquidity",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7437,
                                          "src": "3713:12:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 7446,
                                          "name": "totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7377,
                                          "src": "3697:11:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 7447,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "add",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7769,
                                        "src": "3697:15:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 7449,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3697:29:18",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3683:43:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7451,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3683:43:18"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7458,
                                  "name": "liquidityAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7379,
                                  "src": "3782:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7456,
                                  "name": "reservesA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7373,
                                  "src": "3768:9:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7457,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7819,
                                "src": "3768:13:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7459,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3768:30:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 7460,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7377,
                              "src": "3801:11:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3768:44:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7467,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7464,
                                  "name": "liquidityAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7379,
                                  "src": "3828:15:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7462,
                                  "name": "reservesB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7375,
                                  "src": "3814:9:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7463,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7819,
                                "src": "3814:13:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7465,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3814:30:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 7466,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7377,
                              "src": "3847:11:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3814:44:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 7468,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "3767:92:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "functionReturnParameters": 7389,
                      "id": 7469,
                      "nodeType": "Return",
                      "src": "3760:99:18"
                    }
                  ]
                },
                "documentation": null,
                "id": 7471,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "computeLiquidityValue",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7384,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7373,
                      "mutability": "mutable",
                      "name": "reservesA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7471,
                      "src": "2996:17:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7372,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2996:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7375,
                      "mutability": "mutable",
                      "name": "reservesB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7471,
                      "src": "3023:17:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7374,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3023:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7377,
                      "mutability": "mutable",
                      "name": "totalSupply",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7471,
                      "src": "3050:19:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7376,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3050:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7379,
                      "mutability": "mutable",
                      "name": "liquidityAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7471,
                      "src": "3079:23:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7378,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3079:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7381,
                      "mutability": "mutable",
                      "name": "feeOn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7471,
                      "src": "3112:10:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 7380,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3112:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7383,
                      "mutability": "mutable",
                      "name": "kLast",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7471,
                      "src": "3132:10:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7382,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3132:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2986:162:18"
                },
                "returnParameters": {
                  "id": 7389,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7386,
                      "mutability": "mutable",
                      "name": "tokenAAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7471,
                      "src": "3172:20:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7385,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3172:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7388,
                      "mutability": "mutable",
                      "name": "tokenBAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7471,
                      "src": "3194:20:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7387,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3194:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3171:44:18"
                },
                "scope": 7638,
                "src": "2956:910:18",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 7545,
                  "nodeType": "Block",
                  "src": "4334:477:18",
                  "statements": [
                    {
                      "assignments": [
                        7487,
                        7489
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7487,
                          "mutability": "mutable",
                          "name": "reservesA",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7545,
                          "src": "4345:17:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7486,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4345:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 7489,
                          "mutability": "mutable",
                          "name": "reservesB",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7545,
                          "src": "4364:17:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7488,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4364:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7496,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7492,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7473,
                            "src": "4414:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7493,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7475,
                            "src": "4423:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7494,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7477,
                            "src": "4431:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7490,
                            "name": "MarXDEXV2Library",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7172,
                            "src": "4385:16:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                              "typeString": "type(library MarXDEXV2Library)"
                            }
                          },
                          "id": 7491,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getReserves",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6846,
                          "src": "4385:28:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,address,address) view returns (uint256,uint256)"
                          }
                        },
                        "id": 7495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4385:53:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4344:94:18"
                    },
                    {
                      "assignments": [
                        7498
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7498,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7545,
                          "src": "4448:19:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                            "typeString": "contract IMarXDEXV2Pair"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 7497,
                            "name": "IMarXDEXV2Pair",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 1795,
                            "src": "4448:14:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                              "typeString": "contract IMarXDEXV2Pair"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7507,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7502,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7473,
                                "src": "4510:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 7503,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7475,
                                "src": "4519:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 7504,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7477,
                                "src": "4527:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 7500,
                                "name": "MarXDEXV2Library",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7172,
                                "src": "4485:16:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                  "typeString": "type(library MarXDEXV2Library)"
                                }
                              },
                              "id": 7501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6796,
                              "src": "4485:24:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 7505,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4485:49:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 7499,
                          "name": "IMarXDEXV2Pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1795,
                          "src": "4470:14:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                            "typeString": "type(contract IMarXDEXV2Pair)"
                          }
                        },
                        "id": 7506,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4470:65:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                          "typeString": "contract IMarXDEXV2Pair"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4448:87:18"
                    },
                    {
                      "assignments": [
                        7509
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7509,
                          "mutability": "mutable",
                          "name": "feeOn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7545,
                          "src": "4545:10:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 7508,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "4545:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7520,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7511,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7473,
                                  "src": "4576:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 7510,
                                "name": "IMarXDEXV2Factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1553,
                                "src": "4558:17:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Factory_$1553_$",
                                  "typeString": "type(contract IMarXDEXV2Factory)"
                                }
                              },
                              "id": 7512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4558:26:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Factory_$1553",
                                "typeString": "contract IMarXDEXV2Factory"
                              }
                            },
                            "id": 7513,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "feeTo",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1507,
                            "src": "4558:32:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 7514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4558:34:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 7517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4604:1:18",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 7516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4596:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 7515,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4596:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 7518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4596:10:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "4558:48:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4545:61:18"
                    },
                    {
                      "assignments": [
                        7522
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7522,
                          "mutability": "mutable",
                          "name": "kLast",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7545,
                          "src": "4616:10:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7521,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4616:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7529,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "id": 7523,
                          "name": "feeOn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7509,
                          "src": "4629:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4652:1:18",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "id": 7528,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "4629:24:18",
                        "trueExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7524,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7498,
                              "src": "4637:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                "typeString": "contract IMarXDEXV2Pair"
                              }
                            },
                            "id": 7525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "kLast",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1752,
                            "src": "4637:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 7526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4637:12:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4616:37:18"
                    },
                    {
                      "assignments": [
                        7531
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7531,
                          "mutability": "mutable",
                          "name": "totalSupply",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7545,
                          "src": "4663:16:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7530,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "4663:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7535,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7532,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7498,
                            "src": "4682:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                              "typeString": "contract IMarXDEXV2Pair"
                            }
                          },
                          "id": 7533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalSupply",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1591,
                          "src": "4682:16:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                            "typeString": "function () view external returns (uint256)"
                          }
                        },
                        "id": 7534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4682:18:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4663:37:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7537,
                            "name": "reservesA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7487,
                            "src": "4739:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7538,
                            "name": "reservesB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7489,
                            "src": "4750:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7539,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7531,
                            "src": "4761:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7540,
                            "name": "liquidityAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7479,
                            "src": "4774:15:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7541,
                            "name": "feeOn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7509,
                            "src": "4791:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7542,
                            "name": "kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7522,
                            "src": "4798:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 7536,
                          "name": "computeLiquidityValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7471,
                          "src": "4717:21:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256,uint256,bool,uint256) pure returns (uint256,uint256)"
                          }
                        },
                        "id": 7543,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4717:87:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "functionReturnParameters": 7485,
                      "id": 7544,
                      "nodeType": "Return",
                      "src": "4710:94:18"
                    }
                  ]
                },
                "documentation": null,
                "id": 7546,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getLiquidityValue",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7480,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7473,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7546,
                      "src": "4164:15:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7472,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4164:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7475,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7546,
                      "src": "4189:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7474,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4189:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7477,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7546,
                      "src": "4213:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7476,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4213:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7479,
                      "mutability": "mutable",
                      "name": "liquidityAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7546,
                      "src": "4237:23:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7478,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4237:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4154:112:18"
                },
                "returnParameters": {
                  "id": 7485,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7482,
                      "mutability": "mutable",
                      "name": "tokenAAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7546,
                      "src": "4290:20:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7481,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4290:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7484,
                      "mutability": "mutable",
                      "name": "tokenBAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7546,
                      "src": "4312:20:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7483,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4312:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4289:44:18"
                },
                "scope": 7638,
                "src": "4128:683:18",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 7636,
                  "nodeType": "Block",
                  "src": "5352:669:18",
                  "statements": [
                    {
                      "assignments": [
                        7566
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7566,
                          "mutability": "mutable",
                          "name": "feeOn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7636,
                          "src": "5362:10:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 7565,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "5362:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7577,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 7576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7568,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7548,
                                  "src": "5393:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 7567,
                                "name": "IMarXDEXV2Factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1553,
                                "src": "5375:17:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Factory_$1553_$",
                                  "typeString": "type(contract IMarXDEXV2Factory)"
                                }
                              },
                              "id": 7569,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5375:26:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Factory_$1553",
                                "typeString": "contract IMarXDEXV2Factory"
                              }
                            },
                            "id": 7570,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "feeTo",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1507,
                            "src": "5375:32:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 7571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5375:34:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 7574,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5421:1:18",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 7573,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5413:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 7572,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5413:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 7575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5413:10:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "5375:48:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5362:61:18"
                    },
                    {
                      "assignments": [
                        7579
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7579,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7636,
                          "src": "5433:19:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                            "typeString": "contract IMarXDEXV2Pair"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 7578,
                            "name": "IMarXDEXV2Pair",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 1795,
                            "src": "5433:14:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                              "typeString": "contract IMarXDEXV2Pair"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7588,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7583,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7548,
                                "src": "5495:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 7584,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7550,
                                "src": "5504:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 7585,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7552,
                                "src": "5512:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 7581,
                                "name": "MarXDEXV2Library",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7172,
                                "src": "5470:16:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_MarXDEXV2Library_$7172_$",
                                  "typeString": "type(library MarXDEXV2Library)"
                                }
                              },
                              "id": 7582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6796,
                              "src": "5470:24:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 7586,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5470:49:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 7580,
                          "name": "IMarXDEXV2Pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1795,
                          "src": "5455:14:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                            "typeString": "type(contract IMarXDEXV2Pair)"
                          }
                        },
                        "id": 7587,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5455:65:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                          "typeString": "contract IMarXDEXV2Pair"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5433:87:18"
                    },
                    {
                      "assignments": [
                        7590
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7590,
                          "mutability": "mutable",
                          "name": "kLast",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7636,
                          "src": "5530:10:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7589,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5530:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7597,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "id": 7591,
                          "name": "feeOn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7566,
                          "src": "5543:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5566:1:18",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "id": 7596,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "5543:24:18",
                        "trueExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7592,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7579,
                              "src": "5551:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                "typeString": "contract IMarXDEXV2Pair"
                              }
                            },
                            "id": 7593,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "kLast",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1752,
                            "src": "5551:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 7594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5551:12:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5530:37:18"
                    },
                    {
                      "assignments": [
                        7599
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7599,
                          "mutability": "mutable",
                          "name": "totalSupply",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7636,
                          "src": "5577:16:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7598,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5577:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7603,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7600,
                            "name": "pair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7579,
                            "src": "5596:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                              "typeString": "contract IMarXDEXV2Pair"
                            }
                          },
                          "id": 7601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalSupply",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1591,
                          "src": "5596:16:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                            "typeString": "function () view external returns (uint256)"
                          }
                        },
                        "id": 7602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5596:18:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5577:37:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 7611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7607,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7605,
                                "name": "totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7599,
                                "src": "5682:11:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 7606,
                                "name": "liquidityAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7558,
                                "src": "5697:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5682:30:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7608,
                                "name": "liquidityAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7558,
                                "src": "5716:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7609,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5734:1:18",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5716:19:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "5682:53:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "436f6d707574654c697175696469747956616c75653a204c49515549444954595f414d4f554e54",
                            "id": 7612,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5737:41:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_eba3c4b4bce1b370b996e883c442849cfe288700c2faa2de6af84d237654e6b8",
                              "typeString": "literal_string \"ComputeLiquidityValue: LIQUIDITY_AMOUNT\""
                            },
                            "value": "ComputeLiquidityValue: LIQUIDITY_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_eba3c4b4bce1b370b996e883c442849cfe288700c2faa2de6af84d237654e6b8",
                              "typeString": "literal_string \"ComputeLiquidityValue: LIQUIDITY_AMOUNT\""
                            }
                          ],
                          "id": 7604,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5674:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 7613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5674:105:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7614,
                      "nodeType": "ExpressionStatement",
                      "src": "5674:105:18"
                    },
                    {
                      "assignments": [
                        7616,
                        7618
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7616,
                          "mutability": "mutable",
                          "name": "reservesA",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7636,
                          "src": "5791:14:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7615,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5791:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 7618,
                          "mutability": "mutable",
                          "name": "reservesB",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7636,
                          "src": "5807:14:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7617,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5807:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7626,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7620,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7548,
                            "src": "5851:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7621,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7550,
                            "src": "5860:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7622,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7552,
                            "src": "5868:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7623,
                            "name": "truePriceTokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7554,
                            "src": "5876:15:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7624,
                            "name": "truePriceTokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7556,
                            "src": "5893:15:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 7619,
                          "name": "getReservesAfterArbitrage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7371,
                          "src": "5825:25:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (address,address,address,uint256,uint256) view returns (uint256,uint256)"
                          }
                        },
                        "id": 7625,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5825:84:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5790:119:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7628,
                            "name": "reservesA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7616,
                            "src": "5949:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7629,
                            "name": "reservesB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7618,
                            "src": "5960:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7630,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7599,
                            "src": "5971:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7631,
                            "name": "liquidityAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7558,
                            "src": "5984:15:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7632,
                            "name": "feeOn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7566,
                            "src": "6001:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7633,
                            "name": "kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7590,
                            "src": "6008:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 7627,
                          "name": "computeLiquidityValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7471,
                          "src": "5927:21:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256,uint256,bool,uint256) pure returns (uint256,uint256)"
                          }
                        },
                        "id": 7634,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5927:87:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256)"
                        }
                      },
                      "functionReturnParameters": 7564,
                      "id": 7635,
                      "nodeType": "Return",
                      "src": "5920:94:18"
                    }
                  ]
                },
                "documentation": null,
                "id": 7637,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getLiquidityValueAfterArbitrageToPrice",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7559,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7548,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7637,
                      "src": "5094:15:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7547,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5094:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7550,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7637,
                      "src": "5119:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7549,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5119:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7552,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7637,
                      "src": "5143:14:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7551,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5143:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7554,
                      "mutability": "mutable",
                      "name": "truePriceTokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7637,
                      "src": "5167:23:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7553,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5167:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7556,
                      "mutability": "mutable",
                      "name": "truePriceTokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7637,
                      "src": "5200:23:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7555,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5200:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7558,
                      "mutability": "mutable",
                      "name": "liquidityAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7637,
                      "src": "5233:23:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7557,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5233:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5084:178:18"
                },
                "returnParameters": {
                  "id": 7564,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7561,
                      "mutability": "mutable",
                      "name": "tokenAAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7637,
                      "src": "5295:20:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7560,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5295:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7563,
                      "mutability": "mutable",
                      "name": "tokenBAmount",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7637,
                      "src": "5325:20:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7562,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5325:7:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5285:66:18"
                },
                "scope": 7638,
                "src": "5037:984:18",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 7639,
            "src": "528:5495:18"
          }
        ],
        "src": "0:6024:18"
      }
    },
    "contracts/libraries/MarXDEXV2OracleLibrary.sol": {
      "id": 19,
      "AST": {
        "absolutePath": "contracts/libraries/MarXDEXV2OracleLibrary.sol",
        "exportedSymbols": {
          "MarXDEXV2OracleLibrary": [
            7745
          ]
        },
        "id": 7746,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 7640,
            "literals": [
              "solidity",
              ">=",
              "0.5",
              ".0"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:24:19"
          },
          {
            "absolutePath": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Pair.sol",
            "file": "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Pair.sol",
            "id": 7641,
            "nodeType": "ImportDirective",
            "scope": 7746,
            "sourceUnit": 1796,
            "src": "26:76:19",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "@marx-dex/marx-dex-lib/contracts/libraries/FixedPoint.sol",
            "file": "@marx-dex/marx-dex-lib/contracts/libraries/FixedPoint.sol",
            "id": 7642,
            "nodeType": "ImportDirective",
            "scope": 7746,
            "sourceUnit": 1110,
            "src": "103:67:19",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 7745,
            "linearizedBaseContracts": [
              7745
            ],
            "name": "MarXDEXV2OracleLibrary",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 7644,
                "libraryName": {
                  "contractScope": null,
                  "id": 7643,
                  "name": "FixedPoint",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 1109,
                  "src": "307:10:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FixedPoint_$1109",
                    "typeString": "library FixedPoint"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "301:23:19",
                "typeName": null
              },
              {
                "body": {
                  "id": 7659,
                  "nodeType": "Block",
                  "src": "506:57:19",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7651,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "530:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 7652,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "530:15:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_4294967296_by_1",
                                "typeString": "int_const 4294967296"
                              },
                              "id": 7655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 7653,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "548:1:19",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 7654,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "553:2:19",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "548:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4294967296_by_1",
                                "typeString": "int_const 4294967296"
                              }
                            },
                            "src": "530:25:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 7650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "523:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint32_$",
                            "typeString": "type(uint32)"
                          },
                          "typeName": {
                            "id": 7649,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "523:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 7657,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "523:33:19",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "functionReturnParameters": 7648,
                      "id": 7658,
                      "nodeType": "Return",
                      "src": "516:40:19"
                    }
                  ]
                },
                "documentation": null,
                "id": 7660,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "currentBlockTimestamp",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7645,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "472:2:19"
                },
                "returnParameters": {
                  "id": 7648,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7647,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7660,
                      "src": "498:6:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 7646,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "498:6:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "497:8:19"
                },
                "scope": 7745,
                "src": "442:121:19",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 7743,
                  "nodeType": "Block",
                  "src": "819:887:19",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7674,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7671,
                          "name": "blockTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7669,
                          "src": "829:14:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 7672,
                            "name": "currentBlockTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7660,
                            "src": "846:21:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint32_$",
                              "typeString": "function () view returns (uint32)"
                            }
                          },
                          "id": 7673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "846:23:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "829:40:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "id": 7675,
                      "nodeType": "ExpressionStatement",
                      "src": "829:40:19"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7682,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7676,
                          "name": "price0Cumulative",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7665,
                          "src": "879:16:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7678,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7662,
                                  "src": "913:4:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 7677,
                                "name": "IMarXDEXV2Pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1795,
                                "src": "898:14:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                  "typeString": "type(contract IMarXDEXV2Pair)"
                                }
                              },
                              "id": 7679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "898:20:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                "typeString": "contract IMarXDEXV2Pair"
                              }
                            },
                            "id": 7680,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "price0CumulativeLast",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1742,
                            "src": "898:41:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 7681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "898:43:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "879:62:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7683,
                      "nodeType": "ExpressionStatement",
                      "src": "879:62:19"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7690,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7684,
                          "name": "price1Cumulative",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7667,
                          "src": "951:16:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 7686,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7662,
                                  "src": "985:4:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 7685,
                                "name": "IMarXDEXV2Pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1795,
                                "src": "970:14:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                  "typeString": "type(contract IMarXDEXV2Pair)"
                                }
                              },
                              "id": 7687,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "970:20:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                                "typeString": "contract IMarXDEXV2Pair"
                              }
                            },
                            "id": 7688,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "price1CumulativeLast",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1747,
                            "src": "970:41:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 7689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "970:43:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "951:62:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7691,
                      "nodeType": "ExpressionStatement",
                      "src": "951:62:19"
                    },
                    {
                      "assignments": [
                        7693,
                        7695,
                        7697
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7693,
                          "mutability": "mutable",
                          "name": "reserve0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7743,
                          "src": "1125:16:19",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 7692,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "1125:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 7695,
                          "mutability": "mutable",
                          "name": "reserve1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7743,
                          "src": "1143:16:19",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 7694,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "1143:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 7697,
                          "mutability": "mutable",
                          "name": "blockTimestampLast",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7743,
                          "src": "1161:25:19",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 7696,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "1161:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7703,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7699,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7662,
                                "src": "1205:4:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 7698,
                              "name": "IMarXDEXV2Pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1795,
                              "src": "1190:14:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Pair_$1795_$",
                                "typeString": "type(contract IMarXDEXV2Pair)"
                              }
                            },
                            "id": 7700,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1190:20:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMarXDEXV2Pair_$1795",
                              "typeString": "contract IMarXDEXV2Pair"
                            }
                          },
                          "id": 7701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getReserves",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1737,
                          "src": "1190:32:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "function () view external returns (uint112,uint112,uint32)"
                          }
                        },
                        "id": 7702,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1190:34:19",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                          "typeString": "tuple(uint112,uint112,uint32)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1124:100:19"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 7706,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7704,
                          "name": "blockTimestampLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7697,
                          "src": "1238:18:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7705,
                          "name": "blockTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7669,
                          "src": "1260:14:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "1238:36:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 7742,
                      "nodeType": "IfStatement",
                      "src": "1234:466:19",
                      "trueBody": {
                        "id": 7741,
                        "nodeType": "Block",
                        "src": "1276:424:19",
                        "statements": [
                          {
                            "assignments": [
                              7708
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7708,
                                "mutability": "mutable",
                                "name": "timeElapsed",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7741,
                                "src": "1337:18:19",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "typeName": {
                                  "id": 7707,
                                  "name": "uint32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1337:6:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7712,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 7711,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7709,
                                "name": "blockTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7669,
                                "src": "1358:14:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 7710,
                                "name": "blockTimestampLast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7697,
                                "src": "1375:18:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "1358:35:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1337:56:19"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7725,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7713,
                                "name": "price0Cumulative",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7665,
                                "src": "1481:16:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7724,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 7718,
                                            "name": "reserve1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7695,
                                            "src": "1526:8:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 7719,
                                            "name": "reserve0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7693,
                                            "src": "1536:8:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            },
                                            {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 7716,
                                            "name": "FixedPoint",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1109,
                                            "src": "1506:10:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1109_$",
                                              "typeString": "type(library FixedPoint)"
                                            }
                                          },
                                          "id": 7717,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "fraction",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1000,
                                          "src": "1506:19:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_struct$_uq112x112_$488_memory_ptr_$",
                                            "typeString": "function (uint256,uint256) pure returns (struct FixedPoint.uq112x112 memory)"
                                          }
                                        },
                                        "id": 7720,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1506:39:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                          "typeString": "struct FixedPoint.uq112x112 memory"
                                        }
                                      },
                                      "id": 7721,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "_x",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 487,
                                      "src": "1506:42:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    ],
                                    "id": 7715,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1501:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 7714,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1501:4:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 7722,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1501:48:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 7723,
                                  "name": "timeElapsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7708,
                                  "src": "1552:11:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "1501:62:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1481:82:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7726,
                            "nodeType": "ExpressionStatement",
                            "src": "1481:82:19"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7739,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7727,
                                "name": "price1Cumulative",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7667,
                                "src": "1607:16:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7738,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 7732,
                                            "name": "reserve0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7693,
                                            "src": "1652:8:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 7733,
                                            "name": "reserve1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7695,
                                            "src": "1662:8:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            },
                                            {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 7730,
                                            "name": "FixedPoint",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1109,
                                            "src": "1632:10:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$1109_$",
                                              "typeString": "type(library FixedPoint)"
                                            }
                                          },
                                          "id": 7731,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "fraction",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1000,
                                          "src": "1632:19:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_struct$_uq112x112_$488_memory_ptr_$",
                                            "typeString": "function (uint256,uint256) pure returns (struct FixedPoint.uq112x112 memory)"
                                          }
                                        },
                                        "id": 7734,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1632:39:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_uq112x112_$488_memory_ptr",
                                          "typeString": "struct FixedPoint.uq112x112 memory"
                                        }
                                      },
                                      "id": 7735,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "_x",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 487,
                                      "src": "1632:42:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    ],
                                    "id": 7729,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1627:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 7728,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1627:4:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 7736,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1627:48:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 7737,
                                  "name": "timeElapsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7708,
                                  "src": "1678:11:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "1627:62:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1607:82:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7740,
                            "nodeType": "ExpressionStatement",
                            "src": "1607:82:19"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 7744,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "currentCumulativePrices",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7663,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7662,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7744,
                      "src": "708:12:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7661,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "708:7:19",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "698:28:19"
                },
                "returnParameters": {
                  "id": 7670,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7665,
                      "mutability": "mutable",
                      "name": "price0Cumulative",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7744,
                      "src": "750:21:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7664,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "750:4:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7667,
                      "mutability": "mutable",
                      "name": "price1Cumulative",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7744,
                      "src": "773:21:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7666,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "773:4:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7669,
                      "mutability": "mutable",
                      "name": "blockTimestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7744,
                      "src": "796:21:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 7668,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "796:6:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "749:69:19"
                },
                "scope": 7745,
                "src": "666:1040:19",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 7746,
            "src": "264:1444:19"
          }
        ],
        "src": "0:1709:19"
      }
    },
    "contracts/libraries/SafeMath.sol": {
      "id": 20,
      "AST": {
        "absolutePath": "contracts/libraries/SafeMath.sol",
        "exportedSymbols": {
          "SafeMath": [
            7820
          ]
        },
        "id": 7821,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 7747,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".6"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:23:20"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 7820,
            "linearizedBaseContracts": [
              7820
            ],
            "name": "SafeMath",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 7768,
                  "nodeType": "Block",
                  "src": "214:66:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 7761,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 7757,
                                    "name": "z",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7754,
                                    "src": "233:1:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 7760,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 7758,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7749,
                                      "src": "237:1:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 7759,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7751,
                                      "src": "241:1:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "237:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "233:9:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 7762,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "232:11:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 7763,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7749,
                              "src": "247:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "232:16:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "64732d6d6174682d6164642d6f766572666c6f77",
                            "id": 7765,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "250:22:20",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db",
                              "typeString": "literal_string \"ds-math-add-overflow\""
                            },
                            "value": "ds-math-add-overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db",
                              "typeString": "literal_string \"ds-math-add-overflow\""
                            }
                          ],
                          "id": 7756,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "224:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 7766,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "224:49:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7767,
                      "nodeType": "ExpressionStatement",
                      "src": "224:49:20"
                    }
                  ]
                },
                "documentation": null,
                "id": 7769,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "add",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7752,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7749,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7769,
                      "src": "167:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7748,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "167:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7751,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7769,
                      "src": "175:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7750,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "175:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "166:16:20"
                },
                "returnParameters": {
                  "id": 7755,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7754,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7769,
                      "src": "206:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7753,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "206:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "205:8:20"
                },
                "scope": 7820,
                "src": "154:126:20",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 7790,
                  "nodeType": "Block",
                  "src": "346:67:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 7783,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 7779,
                                    "name": "z",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7776,
                                    "src": "365:1:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 7782,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 7780,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7771,
                                      "src": "369:1:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 7781,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7773,
                                      "src": "373:1:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "369:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "365:9:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 7784,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "364:11:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 7785,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7771,
                              "src": "379:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "364:16:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "64732d6d6174682d7375622d756e646572666c6f77",
                            "id": 7787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "382:23:20",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590",
                              "typeString": "literal_string \"ds-math-sub-underflow\""
                            },
                            "value": "ds-math-sub-underflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590",
                              "typeString": "literal_string \"ds-math-sub-underflow\""
                            }
                          ],
                          "id": 7778,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "356:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 7788,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "356:50:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7789,
                      "nodeType": "ExpressionStatement",
                      "src": "356:50:20"
                    }
                  ]
                },
                "documentation": null,
                "id": 7791,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sub",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7774,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7771,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7791,
                      "src": "299:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7770,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "299:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7773,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7791,
                      "src": "307:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7772,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "307:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "298:16:20"
                },
                "returnParameters": {
                  "id": 7777,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7776,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7791,
                      "src": "338:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7775,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "338:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "337:8:20"
                },
                "scope": 7820,
                "src": "286:127:20",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 7818,
                  "nodeType": "Block",
                  "src": "479:80:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 7814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7803,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7801,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7795,
                                "src": "497:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7802,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "502:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "497:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7811,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7808,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 7804,
                                        "name": "z",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7798,
                                        "src": "508:1:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7807,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 7805,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7793,
                                          "src": "512:1:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 7806,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7795,
                                          "src": "516:1:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "512:5:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "508:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7809,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "507:11:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 7810,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7795,
                                  "src": "521:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "507:15:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 7812,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7793,
                                "src": "526:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "507:20:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "497:30:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "64732d6d6174682d6d756c2d6f766572666c6f77",
                            "id": 7815,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "529:22:20",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd",
                              "typeString": "literal_string \"ds-math-mul-overflow\""
                            },
                            "value": "ds-math-mul-overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd",
                              "typeString": "literal_string \"ds-math-mul-overflow\""
                            }
                          ],
                          "id": 7800,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "489:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 7816,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "489:63:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7817,
                      "nodeType": "ExpressionStatement",
                      "src": "489:63:20"
                    }
                  ]
                },
                "documentation": null,
                "id": 7819,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mul",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7796,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7793,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7819,
                      "src": "432:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7792,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "432:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7795,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7819,
                      "src": "440:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7794,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "440:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "431:16:20"
                },
                "returnParameters": {
                  "id": 7799,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7798,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7819,
                      "src": "471:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7797,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "471:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "470:8:20"
                },
                "scope": 7820,
                "src": "419:140:20",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 7821,
            "src": "131:430:20"
          }
        ],
        "src": "0:562:20"
      }
    },
    "contracts/test/DeflatingERC20.sol": {
      "id": 21,
      "AST": {
        "absolutePath": "contracts/test/DeflatingERC20.sol",
        "exportedSymbols": {
          "DeflatingERC20": [
            8235
          ]
        },
        "id": 8236,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 7822,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".6"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:23:21"
          },
          {
            "absolutePath": "contracts/libraries/SafeMath.sol",
            "file": "../libraries/SafeMath.sol",
            "id": 7823,
            "nodeType": "ImportDirective",
            "scope": 8236,
            "sourceUnit": 7821,
            "src": "25:35:21",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 8235,
            "linearizedBaseContracts": [
              8235
            ],
            "name": "DeflatingERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 7826,
                "libraryName": {
                  "contractScope": null,
                  "id": 7824,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 7820,
                  "src": "98:8:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$7820",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "92:24:21",
                "typeName": {
                  "id": 7825,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "111:4:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "constant": true,
                "functionSelector": "06fdde03",
                "id": 7829,
                "mutability": "constant",
                "name": "name",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8235,
                "src": "122:52:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_memory_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 7827,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "122:6:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "4465666c6174696e67205465737420546f6b656e",
                  "id": 7828,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "152:22:21",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_f89e31130e6fd3d87d62a1ac2770fba58bed5a06c47ce70fa97f8218b1b2743a",
                    "typeString": "literal_string \"Deflating Test Token\""
                  },
                  "value": "Deflating Test Token"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "95d89b41",
                "id": 7832,
                "mutability": "constant",
                "name": "symbol",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8235,
                "src": "180:37:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_memory_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 7830,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "180:6:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "445454",
                  "id": 7831,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "212:5:21",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_0862d7701ae2a04548299440d8e9bcde598aaa04f40d2b263697efe0cc6c0bb4",
                    "typeString": "literal_string \"DTT\""
                  },
                  "value": "DTT"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "313ce567",
                "id": 7835,
                "mutability": "constant",
                "name": "decimals",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8235,
                "src": "223:35:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 7833,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "223:5:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3138",
                  "id": 7834,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "256:2:21",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_18_by_1",
                    "typeString": "int_const 18"
                  },
                  "value": "18"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "18160ddd",
                "id": 7837,
                "mutability": "mutable",
                "name": "totalSupply",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8235,
                "src": "264:24:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 7836,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "264:4:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "70a08231",
                "id": 7841,
                "mutability": "mutable",
                "name": "balanceOf",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8235,
                "src": "294:41:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 7840,
                  "keyType": {
                    "id": 7838,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "302:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "294:24:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 7839,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "313:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "dd62ed3e",
                "id": 7847,
                "mutability": "mutable",
                "name": "allowance",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8235,
                "src": "341:61:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                  "typeString": "mapping(address => mapping(address => uint256))"
                },
                "typeName": {
                  "id": 7846,
                  "keyType": {
                    "id": 7842,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "349:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "341:44:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "valueType": {
                    "id": 7845,
                    "keyType": {
                      "id": 7843,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "368:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "360:24:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 7844,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "379:4:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "3644e515",
                "id": 7849,
                "mutability": "mutable",
                "name": "DOMAIN_SEPARATOR",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8235,
                "src": "409:31:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 7848,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "409:7:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "30adf81f",
                "id": 7852,
                "mutability": "constant",
                "name": "PERMIT_TYPEHASH",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8235,
                "src": "550:108:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 7850,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "550:7:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339",
                  "id": 7851,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "592:66:21",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1",
                    "typeString": "int_const 4995...(69 digits omitted)...3241"
                  },
                  "value": "0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "7ecebe00",
                "id": 7856,
                "mutability": "mutable",
                "name": "nonces",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8235,
                "src": "664:38:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 7855,
                  "keyType": {
                    "id": 7853,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "672:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "664:24:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 7854,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "683:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 7864,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7863,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7858,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7864,
                      "src": "724:21:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7857,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "724:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7860,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7864,
                      "src": "747:23:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7859,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "747:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7862,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7864,
                      "src": "772:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7861,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "772:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "723:60:21"
                },
                "src": "709:75:21"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 7872,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 7871,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7866,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7872,
                      "src": "804:20:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7865,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "804:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7868,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7872,
                      "src": "826:18:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7867,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "826:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7870,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7872,
                      "src": "846:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7869,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "846:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "803:54:21"
                },
                "src": "789:69:21"
              },
              {
                "body": {
                  "id": 7915,
                  "nodeType": "Block",
                  "src": "902:466:21",
                  "statements": [
                    {
                      "assignments": [
                        7878
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7878,
                          "mutability": "mutable",
                          "name": "chainId",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7915,
                          "src": "912:12:21",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7877,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "912:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7879,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "912:12:21"
                    },
                    {
                      "AST": {
                        "nodeType": "YulBlock",
                        "src": "943:44:21",
                        "statements": [
                          {
                            "nodeType": "YulAssignment",
                            "src": "957:20:21",
                            "value": {
                              "arguments": [],
                              "functionName": {
                                "name": "chainid",
                                "nodeType": "YulIdentifier",
                                "src": "968:7:21"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "968:9:21"
                            },
                            "variableNames": [
                              {
                                "name": "chainId",
                                "nodeType": "YulIdentifier",
                                "src": "957:7:21"
                              }
                            ]
                          }
                        ]
                      },
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 7878,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "957:7:21",
                          "valueSize": 1
                        }
                      ],
                      "id": 7880,
                      "nodeType": "InlineAssembly",
                      "src": "934:53:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7907,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7881,
                          "name": "DOMAIN_SEPARATOR",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7849,
                          "src": "996:16:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                                      "id": 7886,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1076:84:21",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                        "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                      },
                                      "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                        "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                      }
                                    ],
                                    "id": 7885,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1066:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 7887,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1066:95:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 7891,
                                          "name": "name",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7829,
                                          "src": "1195:4:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 7890,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1189:5:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                          "typeString": "type(bytes storage pointer)"
                                        },
                                        "typeName": {
                                          "id": 7889,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1189:5:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 7892,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1189:11:21",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 7888,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1179:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 7893,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1179:22:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 7897,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1235:3:21",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                            "typeString": "literal_string \"1\""
                                          },
                                          "value": "1"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                            "typeString": "literal_string \"1\""
                                          }
                                        ],
                                        "id": 7896,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1229:5:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                          "typeString": "type(bytes storage pointer)"
                                        },
                                        "typeName": {
                                          "id": 7895,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1229:5:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 7898,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1229:10:21",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 7894,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1219:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 7899,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1219:21:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 7900,
                                  "name": "chainId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7878,
                                  "src": "1258:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 7903,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "1291:4:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_DeflatingERC20_$8235",
                                        "typeString": "contract DeflatingERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_DeflatingERC20_$8235",
                                        "typeString": "contract DeflatingERC20"
                                      }
                                    ],
                                    "id": 7902,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1283:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 7901,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1283:7:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 7904,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1283:13:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7883,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1038:3:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 7884,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1038:10:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 7905,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1038:272:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 7882,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "1015:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 7906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1015:305:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "996:324:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "id": 7908,
                      "nodeType": "ExpressionStatement",
                      "src": "996:324:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7910,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1336:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 7911,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1336:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7912,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7874,
                            "src": "1348:12:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 7909,
                          "name": "_mint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7951,
                          "src": "1330:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 7913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1330:31:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7914,
                      "nodeType": "ExpressionStatement",
                      "src": "1330:31:21"
                    }
                  ]
                },
                "documentation": null,
                "id": 7916,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7875,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7874,
                      "mutability": "mutable",
                      "name": "_totalSupply",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7916,
                      "src": "876:17:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7873,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "876:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "875:19:21"
                },
                "returnParameters": {
                  "id": 7876,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "902:0:21"
                },
                "scope": 8235,
                "src": "864:504:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7950,
                  "nodeType": "Block",
                  "src": "1422:149:21",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7928,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7923,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7837,
                          "src": "1432:11:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7926,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7920,
                              "src": "1462:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7924,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7837,
                              "src": "1446:11:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7925,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7769,
                            "src": "1446:15:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1446:22:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1432:36:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7929,
                      "nodeType": "ExpressionStatement",
                      "src": "1432:36:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7939,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7930,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7841,
                            "src": "1478:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 7932,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7931,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7918,
                            "src": "1488:2:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1478:13:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7937,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7920,
                              "src": "1512:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 7933,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7841,
                                "src": "1494:9:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 7935,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 7934,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7918,
                                "src": "1504:2:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1494:13:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7936,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7769,
                            "src": "1494:17:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1494:24:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1478:40:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7940,
                      "nodeType": "ExpressionStatement",
                      "src": "1478:40:21"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7944,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1550:1:21",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 7943,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1542:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 7942,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1542:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 7945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1542:10:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7946,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7918,
                            "src": "1554:2:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7947,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7920,
                            "src": "1558:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 7941,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7872,
                          "src": "1533:8:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 7948,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1533:31:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7949,
                      "nodeType": "EmitStatement",
                      "src": "1528:36:21"
                    }
                  ]
                },
                "documentation": null,
                "id": 7951,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_mint",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7921,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7918,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7951,
                      "src": "1389:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7917,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1389:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7920,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7951,
                      "src": "1401:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7919,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1401:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1388:24:21"
                },
                "returnParameters": {
                  "id": 7922,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1422:0:21"
                },
                "scope": 8235,
                "src": "1374:197:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 7985,
                  "nodeType": "Block",
                  "src": "1627:155:21",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7967,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 7958,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7841,
                            "src": "1637:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 7960,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7959,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7953,
                            "src": "1647:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1637:15:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7965,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7955,
                              "src": "1675:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 7961,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7841,
                                "src": "1655:9:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 7963,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 7962,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7953,
                                "src": "1665:4:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1655:15:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7964,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7791,
                            "src": "1655:19:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1655:26:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1637:44:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7968,
                      "nodeType": "ExpressionStatement",
                      "src": "1637:44:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7974,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7969,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7837,
                          "src": "1691:11:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7972,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7955,
                              "src": "1721:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7970,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7837,
                              "src": "1705:11:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7971,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7791,
                            "src": "1705:15:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7973,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1705:22:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1691:36:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7975,
                      "nodeType": "ExpressionStatement",
                      "src": "1691:36:21"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7977,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7953,
                            "src": "1751:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1765:1:21",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 7979,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1757:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 7978,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1757:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 7981,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1757:10:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7982,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7955,
                            "src": "1769:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 7976,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7872,
                          "src": "1742:8:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 7983,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1742:33:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7984,
                      "nodeType": "EmitStatement",
                      "src": "1737:38:21"
                    }
                  ]
                },
                "documentation": null,
                "id": 7986,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_burn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7956,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7953,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7986,
                      "src": "1592:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7952,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1592:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7955,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7986,
                      "src": "1606:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7954,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1606:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1591:26:21"
                },
                "returnParameters": {
                  "id": 7957,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1627:0:21"
                },
                "scope": 8235,
                "src": "1577:205:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8009,
                  "nodeType": "Block",
                  "src": "1858:96:21",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8001,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7995,
                              "name": "allowance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7847,
                              "src": "1868:9:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 7998,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7996,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7988,
                              "src": "1878:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1868:16:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 7999,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 7997,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7990,
                            "src": "1885:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1868:25:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8000,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7992,
                          "src": "1896:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1868:33:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8002,
                      "nodeType": "ExpressionStatement",
                      "src": "1868:33:21"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8004,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7988,
                            "src": "1925:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8005,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7990,
                            "src": "1932:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8006,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7992,
                            "src": "1941:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8003,
                          "name": "Approval",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7864,
                          "src": "1916:8:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8007,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1916:31:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8008,
                      "nodeType": "EmitStatement",
                      "src": "1911:36:21"
                    }
                  ]
                },
                "documentation": null,
                "id": 8010,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7993,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7988,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8010,
                      "src": "1806:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7987,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1806:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7990,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8010,
                      "src": "1821:15:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7989,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1821:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7992,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8010,
                      "src": "1838:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7991,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1838:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1805:44:21"
                },
                "returnParameters": {
                  "id": 7994,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1858:0:21"
                },
                "scope": 8235,
                "src": "1788:166:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 8065,
                  "nodeType": "Block",
                  "src": "2025:303:21",
                  "statements": [
                    {
                      "assignments": [
                        8020
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8020,
                          "mutability": "mutable",
                          "name": "burnAmount",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8065,
                          "src": "2035:15:21",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8019,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2035:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8024,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8023,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 8021,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8016,
                          "src": "2053:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313030",
                          "id": 8022,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2061:3:21",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100_by_1",
                            "typeString": "int_const 100"
                          },
                          "value": "100"
                        },
                        "src": "2053:11:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2035:29:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8026,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8012,
                            "src": "2080:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8027,
                            "name": "burnAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8020,
                            "src": "2086:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8025,
                          "name": "_burn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7986,
                          "src": "2074:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 8028,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2074:23:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8029,
                      "nodeType": "ExpressionStatement",
                      "src": "2074:23:21"
                    },
                    {
                      "assignments": [
                        8031
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8031,
                          "mutability": "mutable",
                          "name": "transferAmount",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8065,
                          "src": "2107:19:21",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8030,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2107:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8036,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8034,
                            "name": "burnAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8020,
                            "src": "2139:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8032,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8016,
                            "src": "2129:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7791,
                          "src": "2129:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8035,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2129:21:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2107:43:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8046,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8037,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7841,
                            "src": "2160:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8039,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8038,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8012,
                            "src": "2170:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2160:15:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8044,
                              "name": "transferAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8031,
                              "src": "2198:14:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 8040,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7841,
                                "src": "2178:9:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 8042,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 8041,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8012,
                                "src": "2188:4:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2178:15:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8043,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7791,
                            "src": "2178:19:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2178:35:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2160:53:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8047,
                      "nodeType": "ExpressionStatement",
                      "src": "2160:53:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8048,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7841,
                            "src": "2223:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8050,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8049,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8014,
                            "src": "2233:2:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2223:13:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8055,
                              "name": "transferAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8031,
                              "src": "2257:14:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 8051,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7841,
                                "src": "2239:9:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 8053,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 8052,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8014,
                                "src": "2249:2:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2239:13:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8054,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7769,
                            "src": "2239:17:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2239:33:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2223:49:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8058,
                      "nodeType": "ExpressionStatement",
                      "src": "2223:49:21"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8060,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8012,
                            "src": "2296:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8061,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8014,
                            "src": "2302:2:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8062,
                            "name": "transferAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8031,
                            "src": "2306:14:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8059,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7872,
                          "src": "2287:8:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8063,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2287:34:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8064,
                      "nodeType": "EmitStatement",
                      "src": "2282:39:21"
                    }
                  ]
                },
                "documentation": null,
                "id": 8066,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8017,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8012,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8066,
                      "src": "1979:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8011,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1979:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8014,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8066,
                      "src": "1993:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8013,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1993:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8016,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8066,
                      "src": "2005:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8015,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2005:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1978:38:21"
                },
                "returnParameters": {
                  "id": 8018,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2025:0:21"
                },
                "scope": 8235,
                "src": "1960:368:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 8084,
                  "nodeType": "Block",
                  "src": "2404:74:21",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8076,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2423:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8077,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2423:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8078,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8068,
                            "src": "2435:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8079,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8070,
                            "src": "2444:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8075,
                          "name": "_approve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8010,
                          "src": "2414:8:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8080,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2414:36:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8081,
                      "nodeType": "ExpressionStatement",
                      "src": "2414:36:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 8082,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2467:4:21",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 8074,
                      "id": 8083,
                      "nodeType": "Return",
                      "src": "2460:11:21"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 8085,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8071,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8068,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8085,
                      "src": "2351:15:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8067,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2351:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8070,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8085,
                      "src": "2368:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8069,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2368:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2350:29:21"
                },
                "returnParameters": {
                  "id": 8074,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8073,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8085,
                      "src": "2398:4:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8072,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2398:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2397:6:21"
                },
                "scope": 8235,
                "src": "2334:144:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 8103,
                  "nodeType": "Block",
                  "src": "2550:70:21",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8095,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2570:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8096,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2570:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8097,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8087,
                            "src": "2582:2:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8098,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8089,
                            "src": "2586:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8094,
                          "name": "_transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8066,
                          "src": "2560:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8099,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2560:32:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8100,
                      "nodeType": "ExpressionStatement",
                      "src": "2560:32:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 8101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2609:4:21",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 8093,
                      "id": 8102,
                      "nodeType": "Return",
                      "src": "2602:11:21"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 8104,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8090,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8087,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8104,
                      "src": "2502:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8086,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2502:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8089,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8104,
                      "src": "2514:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8088,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2514:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2501:24:21"
                },
                "returnParameters": {
                  "id": 8093,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8092,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8104,
                      "src": "2544:4:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8091,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2544:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2543:6:21"
                },
                "scope": 8235,
                "src": "2484:136:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 8154,
                  "nodeType": "Block",
                  "src": "2710:211:21",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8126,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8115,
                              "name": "allowance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7847,
                              "src": "2724:9:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 8117,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8116,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8106,
                              "src": "2734:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2724:15:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8120,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8118,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2740:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8119,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2740:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2724:27:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8124,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "2760:2:21",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 8123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2761:1:21",
                                "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": 8122,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2755:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 8121,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "2755:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 8125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2755:8:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2724:39:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 8145,
                      "nodeType": "IfStatement",
                      "src": "2720:138:21",
                      "trueBody": {
                        "id": 8144,
                        "nodeType": "Block",
                        "src": "2765:93:21",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 8142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 8127,
                                    "name": "allowance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7847,
                                    "src": "2779:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 8131,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 8128,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8106,
                                    "src": "2789:4:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2779:15:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 8132,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8129,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "2795:3:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 8130,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2795:10:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "2779:27:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 8140,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8110,
                                    "src": "2841:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 8133,
                                        "name": "allowance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7847,
                                        "src": "2809:9:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                          "typeString": "mapping(address => mapping(address => uint256))"
                                        }
                                      },
                                      "id": 8135,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 8134,
                                        "name": "from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8106,
                                        "src": "2819:4:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2809:15:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                      }
                                    },
                                    "id": 8138,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8136,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "2825:3:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 8137,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2825:10:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2809:27:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 8139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7791,
                                  "src": "2809:31:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 8141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2809:38:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2779:68:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8143,
                            "nodeType": "ExpressionStatement",
                            "src": "2779:68:21"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8147,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8106,
                            "src": "2877:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8148,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8108,
                            "src": "2883:2:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8149,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8110,
                            "src": "2887:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8146,
                          "name": "_transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8066,
                          "src": "2867:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2867:26:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8151,
                      "nodeType": "ExpressionStatement",
                      "src": "2867:26:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 8152,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2910:4:21",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 8114,
                      "id": 8153,
                      "nodeType": "Return",
                      "src": "2903:11:21"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 8155,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8111,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8106,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8155,
                      "src": "2648:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8105,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2648:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8108,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8155,
                      "src": "2662:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8107,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2662:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8110,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8155,
                      "src": "2674:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8109,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2674:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2647:38:21"
                },
                "returnParameters": {
                  "id": 8114,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8113,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8155,
                      "src": "2704:4:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8112,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2704:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2703:6:21"
                },
                "scope": 8235,
                "src": "2626:295:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 8233,
                  "nodeType": "Block",
                  "src": "3042:525:21",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8176,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 8173,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8163,
                              "src": "3060:8:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8174,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "3072:5:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 8175,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3072:15:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3060:27:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "45585049524544",
                            "id": 8177,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3089:9:21",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a",
                              "typeString": "literal_string \"EXPIRED\""
                            },
                            "value": "EXPIRED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a",
                              "typeString": "literal_string \"EXPIRED\""
                            }
                          ],
                          "id": 8172,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3052:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8178,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3052:47:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8179,
                      "nodeType": "ExpressionStatement",
                      "src": "3052:47:21"
                    },
                    {
                      "assignments": [
                        8181
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8181,
                          "mutability": "mutable",
                          "name": "digest",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8233,
                          "src": "3109:14:21",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 8180,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "3109:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8203,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "1901",
                                "id": 8185,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3183:10:21",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                "value": "\u0019\u0001"
                              },
                              {
                                "argumentTypes": null,
                                "id": 8186,
                                "name": "DOMAIN_SEPARATOR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7849,
                                "src": "3211:16:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 8190,
                                        "name": "PERMIT_TYPEHASH",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7852,
                                        "src": "3266:15:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 8191,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8157,
                                        "src": "3283:5:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 8192,
                                        "name": "spender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8159,
                                        "src": "3290:7:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 8193,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8161,
                                        "src": "3299:5:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 8197,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "++",
                                        "prefix": false,
                                        "src": "3306:15:21",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 8194,
                                            "name": "nonces",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7856,
                                            "src": "3306:6:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                              "typeString": "mapping(address => uint256)"
                                            }
                                          },
                                          "id": 8196,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 8195,
                                            "name": "owner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8157,
                                            "src": "3313:5:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "nodeType": "IndexAccess",
                                          "src": "3306:13:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 8198,
                                        "name": "deadline",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8163,
                                        "src": "3323:8:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8188,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "3255:3:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 8189,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "3255:10:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 8199,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3255:77:21",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 8187,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "3245:9:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 8200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3245:88:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8183,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "3149:3:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3149:16:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 8201,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3149:198:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 8182,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "3126:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 8202,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3126:231:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3109:248:21"
                    },
                    {
                      "assignments": [
                        8205
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8205,
                          "mutability": "mutable",
                          "name": "recoveredAddress",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8233,
                          "src": "3367:24:21",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 8204,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3367:7:21",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8212,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8207,
                            "name": "digest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8181,
                            "src": "3404:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8208,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8165,
                            "src": "3412:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8209,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8167,
                            "src": "3415:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8210,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8169,
                            "src": "3418:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 8206,
                          "name": "ecrecover",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -6,
                          "src": "3394:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                          }
                        },
                        "id": 8211,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3394:26:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3367:53:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 8223,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 8219,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 8214,
                                "name": "recoveredAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8205,
                                "src": "3438:16:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 8217,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3466:1:21",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 8216,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3458:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8215,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3458:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 8218,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3458:10:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3438:30:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 8222,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 8220,
                                "name": "recoveredAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8205,
                                "src": "3472:16:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 8221,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8157,
                                "src": "3492:5:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3472:25:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "3438:59:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "494e56414c49445f5349474e4154555245",
                            "id": 8224,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3499:19:21",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                              "typeString": "literal_string \"INVALID_SIGNATURE\""
                            },
                            "value": "INVALID_SIGNATURE"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                              "typeString": "literal_string \"INVALID_SIGNATURE\""
                            }
                          ],
                          "id": 8213,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3430:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8225,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3430:89:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8226,
                      "nodeType": "ExpressionStatement",
                      "src": "3430:89:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8228,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8157,
                            "src": "3538:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8229,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8159,
                            "src": "3545:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8230,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8161,
                            "src": "3554:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8227,
                          "name": "_approve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8010,
                          "src": "3529:8:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3529:31:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8232,
                      "nodeType": "ExpressionStatement",
                      "src": "3529:31:21"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d505accf",
                "id": 8234,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "permit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8170,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8157,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8234,
                      "src": "2943:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8156,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2943:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8159,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8234,
                      "src": "2958:15:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8158,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2958:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8161,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8234,
                      "src": "2975:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8160,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2975:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8163,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8234,
                      "src": "2987:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8162,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2987:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8165,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8234,
                      "src": "3002:7:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 8164,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "3002:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8167,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8234,
                      "src": "3011:9:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 8166,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3011:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8169,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8234,
                      "src": "3022:9:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 8168,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3022:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2942:90:21"
                },
                "returnParameters": {
                  "id": 8171,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3042:0:21"
                },
                "scope": 8235,
                "src": "2927:640:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 8236,
            "src": "62:3507:21"
          }
        ],
        "src": "0:3570:21"
      }
    },
    "contracts/test/ERC20.sol": {
      "id": 22,
      "AST": {
        "absolutePath": "contracts/test/ERC20.sol",
        "exportedSymbols": {
          "ERC20": [
            8632
          ]
        },
        "id": 8633,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 8237,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".6"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:23:22"
          },
          {
            "absolutePath": "contracts/libraries/SafeMath.sol",
            "file": "../libraries/SafeMath.sol",
            "id": 8238,
            "nodeType": "ImportDirective",
            "scope": 8633,
            "sourceUnit": 7821,
            "src": "25:35:22",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 8632,
            "linearizedBaseContracts": [
              8632
            ],
            "name": "ERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 8241,
                "libraryName": {
                  "contractScope": null,
                  "id": 8239,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 7820,
                  "src": "89:8:22",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$7820",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "83:24:22",
                "typeName": {
                  "id": 8240,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "102:4:22",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "constant": true,
                "functionSelector": "06fdde03",
                "id": 8244,
                "mutability": "constant",
                "name": "name",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8632,
                "src": "113:42:22",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_memory_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 8242,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "113:6:22",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "5465737420546f6b656e",
                  "id": 8243,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "143:12:22",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_81e8ad438398ab0d4a2a7ecb159490c091bb27c67ace5181f70084e30fadaea2",
                    "typeString": "literal_string \"Test Token\""
                  },
                  "value": "Test Token"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "95d89b41",
                "id": 8247,
                "mutability": "constant",
                "name": "symbol",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8632,
                "src": "161:36:22",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_memory_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 8245,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "161:6:22",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "5454",
                  "id": 8246,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "193:4:22",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_2ac50a34f0da9360cfd7e529a34ccdaa61aa98e2a0ac0928bf981af8e73352ba",
                    "typeString": "literal_string \"TT\""
                  },
                  "value": "TT"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "313ce567",
                "id": 8250,
                "mutability": "constant",
                "name": "decimals",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8632,
                "src": "203:35:22",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 8248,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "203:5:22",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3138",
                  "id": 8249,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "236:2:22",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_18_by_1",
                    "typeString": "int_const 18"
                  },
                  "value": "18"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "18160ddd",
                "id": 8252,
                "mutability": "mutable",
                "name": "totalSupply",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8632,
                "src": "244:24:22",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 8251,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "244:4:22",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "70a08231",
                "id": 8256,
                "mutability": "mutable",
                "name": "balanceOf",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8632,
                "src": "274:41:22",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 8255,
                  "keyType": {
                    "id": 8253,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "282:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "274:24:22",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 8254,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "293:4:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "dd62ed3e",
                "id": 8262,
                "mutability": "mutable",
                "name": "allowance",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8632,
                "src": "321:61:22",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                  "typeString": "mapping(address => mapping(address => uint256))"
                },
                "typeName": {
                  "id": 8261,
                  "keyType": {
                    "id": 8257,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "329:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "321:44:22",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "valueType": {
                    "id": 8260,
                    "keyType": {
                      "id": 8258,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "348:7:22",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "340:24:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 8259,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "359:4:22",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "3644e515",
                "id": 8264,
                "mutability": "mutable",
                "name": "DOMAIN_SEPARATOR",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8632,
                "src": "389:31:22",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 8263,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "389:7:22",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "30adf81f",
                "id": 8267,
                "mutability": "constant",
                "name": "PERMIT_TYPEHASH",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8632,
                "src": "530:108:22",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 8265,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "530:7:22",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339",
                  "id": 8266,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "572:66:22",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1",
                    "typeString": "int_const 4995...(69 digits omitted)...3241"
                  },
                  "value": "0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "7ecebe00",
                "id": 8271,
                "mutability": "mutable",
                "name": "nonces",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8632,
                "src": "644:38:22",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 8270,
                  "keyType": {
                    "id": 8268,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "652:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "644:24:22",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 8269,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "663:4:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8279,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8278,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8273,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8279,
                      "src": "704:21:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8272,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "704:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8275,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8279,
                      "src": "727:23:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8274,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "727:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8277,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8279,
                      "src": "752:10:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8276,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "752:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "703:60:22"
                },
                "src": "689:75:22"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8287,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8286,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8281,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8287,
                      "src": "784:20:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8280,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "784:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8283,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8287,
                      "src": "806:18:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8282,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "806:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8285,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8287,
                      "src": "826:10:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8284,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "826:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "783:54:22"
                },
                "src": "769:69:22"
              },
              {
                "body": {
                  "id": 8330,
                  "nodeType": "Block",
                  "src": "882:466:22",
                  "statements": [
                    {
                      "assignments": [
                        8293
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8293,
                          "mutability": "mutable",
                          "name": "chainId",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8330,
                          "src": "892:12:22",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8292,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "892:4:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8294,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "892:12:22"
                    },
                    {
                      "AST": {
                        "nodeType": "YulBlock",
                        "src": "923:44:22",
                        "statements": [
                          {
                            "nodeType": "YulAssignment",
                            "src": "937:20:22",
                            "value": {
                              "arguments": [],
                              "functionName": {
                                "name": "chainid",
                                "nodeType": "YulIdentifier",
                                "src": "948:7:22"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "948:9:22"
                            },
                            "variableNames": [
                              {
                                "name": "chainId",
                                "nodeType": "YulIdentifier",
                                "src": "937:7:22"
                              }
                            ]
                          }
                        ]
                      },
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 8293,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "937:7:22",
                          "valueSize": 1
                        }
                      ],
                      "id": 8295,
                      "nodeType": "InlineAssembly",
                      "src": "914:53:22"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8322,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8296,
                          "name": "DOMAIN_SEPARATOR",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8264,
                          "src": "976:16:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                                      "id": 8301,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1056:84:22",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                        "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                      },
                                      "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                        "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                      }
                                    ],
                                    "id": 8300,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1046:9:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 8302,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1046:95:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 8306,
                                          "name": "name",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8244,
                                          "src": "1175:4:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 8305,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1169:5:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                          "typeString": "type(bytes storage pointer)"
                                        },
                                        "typeName": {
                                          "id": 8304,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1169:5:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 8307,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1169:11:22",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 8303,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1159:9:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 8308,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1159:22:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 8312,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1215:3:22",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                            "typeString": "literal_string \"1\""
                                          },
                                          "value": "1"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                            "typeString": "literal_string \"1\""
                                          }
                                        ],
                                        "id": 8311,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1209:5:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                          "typeString": "type(bytes storage pointer)"
                                        },
                                        "typeName": {
                                          "id": 8310,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1209:5:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 8313,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1209:10:22",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 8309,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1199:9:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 8314,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1199:21:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 8315,
                                  "name": "chainId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8293,
                                  "src": "1238:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 8318,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "1271:4:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ERC20_$8632",
                                        "typeString": "contract ERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_ERC20_$8632",
                                        "typeString": "contract ERC20"
                                      }
                                    ],
                                    "id": 8317,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1263:7:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 8316,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1263:7:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 8319,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1263:13:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8298,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1018:3:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 8299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1018:10:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 8320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1018:272:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 8297,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "995:9:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 8321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "995:305:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "976:324:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "id": 8323,
                      "nodeType": "ExpressionStatement",
                      "src": "976:324:22"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8325,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1316:3:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8326,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1316:10:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8327,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8289,
                            "src": "1328:12:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8324,
                          "name": "_mint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8366,
                          "src": "1310:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 8328,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1310:31:22",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8329,
                      "nodeType": "ExpressionStatement",
                      "src": "1310:31:22"
                    }
                  ]
                },
                "documentation": null,
                "id": 8331,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8290,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8289,
                      "mutability": "mutable",
                      "name": "_totalSupply",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8331,
                      "src": "856:17:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8288,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "856:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "855:19:22"
                },
                "returnParameters": {
                  "id": 8291,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "882:0:22"
                },
                "scope": 8632,
                "src": "844:504:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8365,
                  "nodeType": "Block",
                  "src": "1402:149:22",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8343,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8338,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8252,
                          "src": "1412:11:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8341,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8335,
                              "src": "1442:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8339,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8252,
                              "src": "1426:11:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7769,
                            "src": "1426:15:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1426:22:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1412:36:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8344,
                      "nodeType": "ExpressionStatement",
                      "src": "1412:36:22"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8354,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8345,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8256,
                            "src": "1458:9:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8347,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8346,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8333,
                            "src": "1468:2:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1458:13:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8352,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8335,
                              "src": "1492:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 8348,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8256,
                                "src": "1474:9:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 8350,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 8349,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8333,
                                "src": "1484:2:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1474:13:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8351,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7769,
                            "src": "1474:17:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1474:24:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1458:40:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8355,
                      "nodeType": "ExpressionStatement",
                      "src": "1458:40:22"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 8359,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1530:1:22",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 8358,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1522:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 8357,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1522:7:22",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 8360,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1522:10:22",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8361,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8333,
                            "src": "1534:2:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8362,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8335,
                            "src": "1538:5:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8356,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8287,
                          "src": "1513:8:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8363,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1513:31:22",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8364,
                      "nodeType": "EmitStatement",
                      "src": "1508:36:22"
                    }
                  ]
                },
                "documentation": null,
                "id": 8366,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_mint",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8336,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8333,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8366,
                      "src": "1369:10:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8332,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1369:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8335,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8366,
                      "src": "1381:10:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8334,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1381:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1368:24:22"
                },
                "returnParameters": {
                  "id": 8337,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1402:0:22"
                },
                "scope": 8632,
                "src": "1354:197:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8400,
                  "nodeType": "Block",
                  "src": "1607:155:22",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8382,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8373,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8256,
                            "src": "1617:9:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8375,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8374,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8368,
                            "src": "1627:4:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1617:15:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8380,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8370,
                              "src": "1655:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 8376,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8256,
                                "src": "1635:9:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 8378,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 8377,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8368,
                                "src": "1645:4:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1635:15:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7791,
                            "src": "1635:19:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1635:26:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1617:44:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8383,
                      "nodeType": "ExpressionStatement",
                      "src": "1617:44:22"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8384,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8252,
                          "src": "1671:11:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8387,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8370,
                              "src": "1701:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8385,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8252,
                              "src": "1685:11:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7791,
                            "src": "1685:15:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1685:22:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1671:36:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8390,
                      "nodeType": "ExpressionStatement",
                      "src": "1671:36:22"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8392,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8368,
                            "src": "1731:4:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 8395,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1745:1:22",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 8394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1737:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 8393,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1737:7:22",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 8396,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1737:10:22",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8397,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8370,
                            "src": "1749:5:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8391,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8287,
                          "src": "1722:8:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8398,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1722:33:22",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8399,
                      "nodeType": "EmitStatement",
                      "src": "1717:38:22"
                    }
                  ]
                },
                "documentation": null,
                "id": 8401,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_burn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8371,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8368,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8401,
                      "src": "1572:12:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8367,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1572:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8370,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8401,
                      "src": "1586:10:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8369,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1586:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1571:26:22"
                },
                "returnParameters": {
                  "id": 8372,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1607:0:22"
                },
                "scope": 8632,
                "src": "1557:205:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8424,
                  "nodeType": "Block",
                  "src": "1838:96:22",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8416,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8410,
                              "name": "allowance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8262,
                              "src": "1848:9:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 8413,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8411,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8403,
                              "src": "1858:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1848:16:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8414,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8412,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8405,
                            "src": "1865:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1848:25:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8415,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8407,
                          "src": "1876:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1848:33:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8417,
                      "nodeType": "ExpressionStatement",
                      "src": "1848:33:22"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8419,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8403,
                            "src": "1905:5:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8420,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8405,
                            "src": "1912:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8421,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8407,
                            "src": "1921:5:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8418,
                          "name": "Approval",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8279,
                          "src": "1896:8:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8422,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1896:31:22",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8423,
                      "nodeType": "EmitStatement",
                      "src": "1891:36:22"
                    }
                  ]
                },
                "documentation": null,
                "id": 8425,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8408,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8403,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8425,
                      "src": "1786:13:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8402,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1786:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8405,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8425,
                      "src": "1801:15:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8404,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1801:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8407,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8425,
                      "src": "1818:10:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8406,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1818:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1785:44:22"
                },
                "returnParameters": {
                  "id": 8409,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1838:0:22"
                },
                "scope": 8632,
                "src": "1768:166:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 8462,
                  "nodeType": "Block",
                  "src": "2005:151:22",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8443,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8434,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8256,
                            "src": "2015:9:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8436,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8435,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8427,
                            "src": "2025:4:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2015:15:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8441,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8431,
                              "src": "2053:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 8437,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8256,
                                "src": "2033:9:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 8439,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 8438,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8427,
                                "src": "2043:4:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2033:15:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7791,
                            "src": "2033:19:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2033:26:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2015:44:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8444,
                      "nodeType": "ExpressionStatement",
                      "src": "2015:44:22"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8454,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8445,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8256,
                            "src": "2069:9:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8447,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8446,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8429,
                            "src": "2079:2:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2069:13:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8452,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8431,
                              "src": "2103:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 8448,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8256,
                                "src": "2085:9:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 8450,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 8449,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8429,
                                "src": "2095:2:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2085:13:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8451,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7769,
                            "src": "2085:17:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2085:24:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2069:40:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8455,
                      "nodeType": "ExpressionStatement",
                      "src": "2069:40:22"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8457,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8427,
                            "src": "2133:4:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8458,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8429,
                            "src": "2139:2:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8459,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8431,
                            "src": "2143:5:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8456,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8287,
                          "src": "2124:8:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8460,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2124:25:22",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8461,
                      "nodeType": "EmitStatement",
                      "src": "2119:30:22"
                    }
                  ]
                },
                "documentation": null,
                "id": 8463,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8432,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8427,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8463,
                      "src": "1959:12:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8426,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1959:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8429,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8463,
                      "src": "1973:10:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8428,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1973:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8431,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8463,
                      "src": "1985:10:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8430,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1985:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1958:38:22"
                },
                "returnParameters": {
                  "id": 8433,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2005:0:22"
                },
                "scope": 8632,
                "src": "1940:216:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 8481,
                  "nodeType": "Block",
                  "src": "2232:74:22",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8473,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2251:3:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8474,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2251:10:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8475,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8465,
                            "src": "2263:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8476,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8467,
                            "src": "2272:5:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8472,
                          "name": "_approve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8425,
                          "src": "2242:8:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8477,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2242:36:22",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8478,
                      "nodeType": "ExpressionStatement",
                      "src": "2242:36:22"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 8479,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2295:4:22",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 8471,
                      "id": 8480,
                      "nodeType": "Return",
                      "src": "2288:11:22"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 8482,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8468,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8465,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8482,
                      "src": "2179:15:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8464,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2179:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8467,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8482,
                      "src": "2196:10:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8466,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2196:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2178:29:22"
                },
                "returnParameters": {
                  "id": 8471,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8470,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8482,
                      "src": "2226:4:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8469,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2226:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2225:6:22"
                },
                "scope": 8632,
                "src": "2162:144:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 8500,
                  "nodeType": "Block",
                  "src": "2378:70:22",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8492,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2398:3:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8493,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2398:10:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8494,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8484,
                            "src": "2410:2:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8495,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8486,
                            "src": "2414:5:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8491,
                          "name": "_transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8463,
                          "src": "2388:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8496,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2388:32:22",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8497,
                      "nodeType": "ExpressionStatement",
                      "src": "2388:32:22"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 8498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2437:4:22",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 8490,
                      "id": 8499,
                      "nodeType": "Return",
                      "src": "2430:11:22"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 8501,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8487,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8484,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8501,
                      "src": "2330:10:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8483,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2330:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8486,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8501,
                      "src": "2342:10:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8485,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2342:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2329:24:22"
                },
                "returnParameters": {
                  "id": 8490,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8489,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8501,
                      "src": "2372:4:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8488,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2372:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2371:6:22"
                },
                "scope": 8632,
                "src": "2312:136:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 8551,
                  "nodeType": "Block",
                  "src": "2538:211:22",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8512,
                              "name": "allowance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8262,
                              "src": "2552:9:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 8514,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8513,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8503,
                              "src": "2562:4:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2552:15:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8517,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8515,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2568:3:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2568:10:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2552:27:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "2588:2:22",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 8520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2589:1:22",
                                "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": 8519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2583:4:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 8518,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "2583:4:22",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 8522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2583:8:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2552:39:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 8542,
                      "nodeType": "IfStatement",
                      "src": "2548:138:22",
                      "trueBody": {
                        "id": 8541,
                        "nodeType": "Block",
                        "src": "2593:93:22",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 8539,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 8524,
                                    "name": "allowance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8262,
                                    "src": "2607:9:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 8528,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 8525,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8503,
                                    "src": "2617:4:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2607:15:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 8529,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8526,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "2623:3:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 8527,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2623:10:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "2607:27:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 8537,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8507,
                                    "src": "2669:5:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 8530,
                                        "name": "allowance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8262,
                                        "src": "2637:9:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                          "typeString": "mapping(address => mapping(address => uint256))"
                                        }
                                      },
                                      "id": 8532,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 8531,
                                        "name": "from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8503,
                                        "src": "2647:4:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2637:15:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                      }
                                    },
                                    "id": 8535,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8533,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "2653:3:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 8534,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2653:10:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2637:27:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 8536,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7791,
                                  "src": "2637:31:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 8538,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2637:38:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2607:68:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8540,
                            "nodeType": "ExpressionStatement",
                            "src": "2607:68:22"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8544,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8503,
                            "src": "2705:4:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8545,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8505,
                            "src": "2711:2:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8546,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8507,
                            "src": "2715:5:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8543,
                          "name": "_transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8463,
                          "src": "2695:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8547,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2695:26:22",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8548,
                      "nodeType": "ExpressionStatement",
                      "src": "2695:26:22"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 8549,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2738:4:22",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 8511,
                      "id": 8550,
                      "nodeType": "Return",
                      "src": "2731:11:22"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 8552,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8508,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8503,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8552,
                      "src": "2476:12:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8502,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2476:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8505,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8552,
                      "src": "2490:10:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8504,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2490:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8507,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8552,
                      "src": "2502:10:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8506,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2502:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2475:38:22"
                },
                "returnParameters": {
                  "id": 8511,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8510,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8552,
                      "src": "2532:4:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8509,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2532:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2531:6:22"
                },
                "scope": 8632,
                "src": "2454:295:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 8630,
                  "nodeType": "Block",
                  "src": "2870:525:22",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8573,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 8570,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8560,
                              "src": "2888:8:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8571,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "2900:5:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 8572,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2900:15:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2888:27:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "45585049524544",
                            "id": 8574,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2917:9:22",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a",
                              "typeString": "literal_string \"EXPIRED\""
                            },
                            "value": "EXPIRED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a",
                              "typeString": "literal_string \"EXPIRED\""
                            }
                          ],
                          "id": 8569,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2880:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8575,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2880:47:22",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8576,
                      "nodeType": "ExpressionStatement",
                      "src": "2880:47:22"
                    },
                    {
                      "assignments": [
                        8578
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8578,
                          "mutability": "mutable",
                          "name": "digest",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8630,
                          "src": "2937:14:22",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 8577,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "2937:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8600,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "1901",
                                "id": 8582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3011:10:22",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                "value": "\u0019\u0001"
                              },
                              {
                                "argumentTypes": null,
                                "id": 8583,
                                "name": "DOMAIN_SEPARATOR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8264,
                                "src": "3039:16:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 8587,
                                        "name": "PERMIT_TYPEHASH",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8267,
                                        "src": "3094:15:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 8588,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8554,
                                        "src": "3111:5:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 8589,
                                        "name": "spender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8556,
                                        "src": "3118:7:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 8590,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8558,
                                        "src": "3127:5:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 8594,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "++",
                                        "prefix": false,
                                        "src": "3134:15:22",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 8591,
                                            "name": "nonces",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8271,
                                            "src": "3134:6:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                              "typeString": "mapping(address => uint256)"
                                            }
                                          },
                                          "id": 8593,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 8592,
                                            "name": "owner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8554,
                                            "src": "3141:5:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "nodeType": "IndexAccess",
                                          "src": "3134:13:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 8595,
                                        "name": "deadline",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8560,
                                        "src": "3151:8:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8585,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "3083:3:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 8586,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "3083:10:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 8596,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3083:77:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 8584,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "3073:9:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 8597,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3073:88:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8580,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2977:3:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8581,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2977:16:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 8598,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2977:198:22",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 8579,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "2954:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 8599,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2954:231:22",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2937:248:22"
                    },
                    {
                      "assignments": [
                        8602
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8602,
                          "mutability": "mutable",
                          "name": "recoveredAddress",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8630,
                          "src": "3195:24:22",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 8601,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3195:7:22",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8609,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8604,
                            "name": "digest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8578,
                            "src": "3232:6:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8605,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8562,
                            "src": "3240:1:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8606,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8564,
                            "src": "3243:1:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8607,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8566,
                            "src": "3246:1:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 8603,
                          "name": "ecrecover",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -6,
                          "src": "3222:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                          }
                        },
                        "id": 8608,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3222:26:22",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3195:53:22"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 8620,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 8616,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 8611,
                                "name": "recoveredAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8602,
                                "src": "3266:16:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 8614,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3294:1:22",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 8613,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3286:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8612,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3286:7:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 8615,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3286:10:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3266:30:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 8619,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 8617,
                                "name": "recoveredAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8602,
                                "src": "3300:16:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 8618,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8554,
                                "src": "3320:5:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3300:25:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "3266:59:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "494e56414c49445f5349474e4154555245",
                            "id": 8621,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3327:19:22",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                              "typeString": "literal_string \"INVALID_SIGNATURE\""
                            },
                            "value": "INVALID_SIGNATURE"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                              "typeString": "literal_string \"INVALID_SIGNATURE\""
                            }
                          ],
                          "id": 8610,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3258:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8622,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3258:89:22",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8623,
                      "nodeType": "ExpressionStatement",
                      "src": "3258:89:22"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8625,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8554,
                            "src": "3366:5:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8626,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8556,
                            "src": "3373:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8627,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8558,
                            "src": "3382:5:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8624,
                          "name": "_approve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8425,
                          "src": "3357:8:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8628,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3357:31:22",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8629,
                      "nodeType": "ExpressionStatement",
                      "src": "3357:31:22"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d505accf",
                "id": 8631,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "permit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8567,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8554,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8631,
                      "src": "2771:13:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8553,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2771:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8556,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8631,
                      "src": "2786:15:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8555,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2786:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8558,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8631,
                      "src": "2803:10:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8557,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2803:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8560,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8631,
                      "src": "2815:13:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8559,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2815:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8562,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8631,
                      "src": "2830:7:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 8561,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "2830:5:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8564,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8631,
                      "src": "2839:9:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 8563,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2839:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8566,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8631,
                      "src": "2850:9:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 8565,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2850:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2770:90:22"
                },
                "returnParameters": {
                  "id": 8568,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2870:0:22"
                },
                "scope": 8632,
                "src": "2755:640:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 8633,
            "src": "62:3335:22"
          }
        ],
        "src": "0:3398:22"
      }
    },
    "contracts/test/RouterEventEmitter.sol": {
      "id": 23,
      "AST": {
        "absolutePath": "contracts/test/RouterEventEmitter.sol",
        "exportedSymbols": {
          "RouterEventEmitter": [
            8957
          ]
        },
        "id": 8958,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 8634,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".6"
            ],
            "nodeType": "PragmaDirective",
            "src": "0:23:23"
          },
          {
            "absolutePath": "contracts/interfaces/IMarXDEXV2Router01.sol",
            "file": "../interfaces/IMarXDEXV2Router01.sol",
            "id": 8635,
            "nodeType": "ImportDirective",
            "scope": 8958,
            "sourceUnit": 6593,
            "src": "25:46:23",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 8957,
            "linearizedBaseContracts": [
              8957
            ],
            "name": "RouterEventEmitter",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "documentation": null,
                "id": 8640,
                "name": "Amounts",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8639,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8638,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8640,
                      "src": "121:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 8636,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "121:4:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8637,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "121:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "120:16:23"
                },
                "src": "107:30:23"
              },
              {
                "body": {
                  "id": 8643,
                  "nodeType": "Block",
                  "src": "170:2:23",
                  "statements": []
                },
                "documentation": null,
                "id": 8644,
                "implemented": true,
                "kind": "receive",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8641,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "150:2:23"
                },
                "returnParameters": {
                  "id": 8642,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "170:0:23"
                },
                "scope": 8957,
                "src": "143:29:23",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 8696,
                  "nodeType": "Block",
                  "src": "377:311:23",
                  "statements": [
                    {
                      "assignments": [
                        8661,
                        8663
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8661,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8696,
                          "src": "388:12:23",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 8660,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "388:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 8663,
                          "mutability": "mutable",
                          "name": "returnData",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8696,
                          "src": "402:23:23",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 8662,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "402:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8680,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 8669,
                                        "name": "router",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8646,
                                        "src": "504:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 8668,
                                      "name": "IMarXDEXV2Router01",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6592,
                                      "src": "485:18:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Router01_$6592_$",
                                        "typeString": "type(contract IMarXDEXV2Router01)"
                                      }
                                    },
                                    "id": 8670,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "485:26:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                                      "typeString": "contract IMarXDEXV2Router01"
                                    }
                                  },
                                  "id": 8671,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "swapExactTokensForTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6455,
                                  "src": "485:51:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                                  }
                                },
                                "id": 8672,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "485:60:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8673,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8648,
                                "src": "547:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8674,
                                "name": "amountOutMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8650,
                                "src": "557:12:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8675,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8653,
                                "src": "571:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8676,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8655,
                                "src": "577:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8677,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8657,
                                "src": "581:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8666,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "449:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "449:22:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 8678,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "449:150:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8664,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8646,
                            "src": "429:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 8665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "delegatecall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "429:19:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) returns (bool,bytes memory)"
                          }
                        },
                        "id": 8679,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "429:171:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "387:213:23"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8682,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8661,
                            "src": "617:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 8681,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "610:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 8683,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "610:15:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8684,
                      "nodeType": "ExpressionStatement",
                      "src": "610:15:23"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8688,
                                "name": "returnData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8663,
                                "src": "659:10:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 8690,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "672:4:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 8689,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "672:4:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 8691,
                                    "indexExpression": null,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "672:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "type(uint256[] memory)"
                                    }
                                  }
                                ],
                                "id": 8692,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "671:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8686,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "648:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8687,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "648:10:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 8693,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "648:32:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 8685,
                          "name": "Amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8640,
                          "src": "640:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                            "typeString": "function (uint256[] memory)"
                          }
                        },
                        "id": 8694,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "640:41:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8695,
                      "nodeType": "EmitStatement",
                      "src": "635:46:23"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "375734d9",
                "id": 8697,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactTokensForTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8658,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8646,
                      "mutability": "mutable",
                      "name": "router",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8697,
                      "src": "221:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8645,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "221:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8648,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8697,
                      "src": "245:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8647,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "245:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8650,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8697,
                      "src": "268:17:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8649,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "268:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8653,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8697,
                      "src": "295:23:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 8651,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "295:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8652,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "295:9:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8655,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8697,
                      "src": "328:10:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8654,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "328:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8657,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8697,
                      "src": "348:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8656,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "348:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "211:156:23"
                },
                "returnParameters": {
                  "id": 8659,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "377:0:23"
                },
                "scope": 8957,
                "src": "178:510:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 8749,
                  "nodeType": "Block",
                  "src": "893:311:23",
                  "statements": [
                    {
                      "assignments": [
                        8714,
                        8716
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8714,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8749,
                          "src": "904:12:23",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 8713,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "904:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 8716,
                          "mutability": "mutable",
                          "name": "returnData",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8749,
                          "src": "918:23:23",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 8715,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "918:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8733,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 8722,
                                        "name": "router",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8699,
                                        "src": "1020:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 8721,
                                      "name": "IMarXDEXV2Router01",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6592,
                                      "src": "1001:18:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Router01_$6592_$",
                                        "typeString": "type(contract IMarXDEXV2Router01)"
                                      }
                                    },
                                    "id": 8723,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1001:26:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                                      "typeString": "contract IMarXDEXV2Router01"
                                    }
                                  },
                                  "id": 8724,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "swapTokensForExactTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6472,
                                  "src": "1001:51:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                                  }
                                },
                                "id": 8725,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1001:60:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8726,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8701,
                                "src": "1063:9:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8727,
                                "name": "amountInMax",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8703,
                                "src": "1074:11:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8728,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8706,
                                "src": "1087:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8729,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8708,
                                "src": "1093:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8730,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8710,
                                "src": "1097:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8719,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "965:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8720,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "965:22:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 8731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "965:150:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8717,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8699,
                            "src": "945:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 8718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "delegatecall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "945:19:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) returns (bool,bytes memory)"
                          }
                        },
                        "id": 8732,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "945:171:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "903:213:23"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8735,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8714,
                            "src": "1133:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 8734,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "1126:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 8736,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1126:15:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8737,
                      "nodeType": "ExpressionStatement",
                      "src": "1126:15:23"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8741,
                                "name": "returnData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8716,
                                "src": "1175:10:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 8743,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1188:4:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 8742,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1188:4:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 8744,
                                    "indexExpression": null,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1188:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "type(uint256[] memory)"
                                    }
                                  }
                                ],
                                "id": 8745,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1187:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8739,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "1164:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8740,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1164:10:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 8746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1164:32:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 8738,
                          "name": "Amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8640,
                          "src": "1156:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                            "typeString": "function (uint256[] memory)"
                          }
                        },
                        "id": 8747,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1156:41:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8748,
                      "nodeType": "EmitStatement",
                      "src": "1151:46:23"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "22b58410",
                "id": 8750,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapTokensForExactTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8711,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8699,
                      "mutability": "mutable",
                      "name": "router",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8750,
                      "src": "737:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8698,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "737:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8701,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8750,
                      "src": "761:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8700,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "761:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8703,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8750,
                      "src": "785:16:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8702,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "785:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8706,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8750,
                      "src": "811:23:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 8704,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "811:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8705,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "811:9:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8708,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8750,
                      "src": "844:10:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8707,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "844:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8710,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8750,
                      "src": "864:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8709,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "864:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "727:156:23"
                },
                "returnParameters": {
                  "id": 8712,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "893:0:23"
                },
                "scope": 8957,
                "src": "694:510:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 8799,
                  "nodeType": "Block",
                  "src": "1391:298:23",
                  "statements": [
                    {
                      "assignments": [
                        8765,
                        8767
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8765,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8799,
                          "src": "1402:12:23",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 8764,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1402:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 8767,
                          "mutability": "mutable",
                          "name": "returnData",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8799,
                          "src": "1416:23:23",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 8766,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1416:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8783,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 8773,
                                        "name": "router",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8752,
                                        "src": "1518:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 8772,
                                      "name": "IMarXDEXV2Router01",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6592,
                                      "src": "1499:18:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Router01_$6592_$",
                                        "typeString": "type(contract IMarXDEXV2Router01)"
                                      }
                                    },
                                    "id": 8774,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1499:26:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                                      "typeString": "contract IMarXDEXV2Router01"
                                    }
                                  },
                                  "id": 8775,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "swapExactETHForTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6487,
                                  "src": "1499:48:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256,address[] memory,address,uint256) payable external returns (uint256[] memory)"
                                  }
                                },
                                "id": 8776,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1499:57:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8777,
                                "name": "amountOutMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8754,
                                "src": "1558:12:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8778,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8757,
                                "src": "1572:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8779,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8759,
                                "src": "1578:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8780,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8761,
                                "src": "1582:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8770,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "1463:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8771,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1463:22:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 8781,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1463:137:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8768,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8752,
                            "src": "1443:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 8769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "delegatecall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1443:19:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) returns (bool,bytes memory)"
                          }
                        },
                        "id": 8782,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1443:158:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1401:200:23"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8785,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8765,
                            "src": "1618:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 8784,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "1611:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 8786,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1611:15:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8787,
                      "nodeType": "ExpressionStatement",
                      "src": "1611:15:23"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8791,
                                "name": "returnData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8767,
                                "src": "1660:10:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 8793,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1673:4:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 8792,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1673:4:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 8794,
                                    "indexExpression": null,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1673:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "type(uint256[] memory)"
                                    }
                                  }
                                ],
                                "id": 8795,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1672:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8789,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "1649:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8790,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1649:10:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 8796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1649:32:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 8788,
                          "name": "Amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8640,
                          "src": "1641:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                            "typeString": "function (uint256[] memory)"
                          }
                        },
                        "id": 8797,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1641:41:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8798,
                      "nodeType": "EmitStatement",
                      "src": "1636:46:23"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "fde1adda",
                "id": 8800,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactETHForTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8762,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8752,
                      "mutability": "mutable",
                      "name": "router",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8800,
                      "src": "1250:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8751,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1250:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8754,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8800,
                      "src": "1274:17:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8753,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1274:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8757,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8800,
                      "src": "1301:23:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 8755,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1301:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8756,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "1301:9:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8759,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8800,
                      "src": "1334:10:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8758,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1334:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8761,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8800,
                      "src": "1354:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8760,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1354:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1240:133:23"
                },
                "returnParameters": {
                  "id": 8763,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1391:0:23"
                },
                "scope": 8957,
                "src": "1210:479:23",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 8852,
                  "nodeType": "Block",
                  "src": "1891:308:23",
                  "statements": [
                    {
                      "assignments": [
                        8817,
                        8819
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8817,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8852,
                          "src": "1902:12:23",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 8816,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1902:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 8819,
                          "mutability": "mutable",
                          "name": "returnData",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8852,
                          "src": "1916:23:23",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 8818,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1916:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8836,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 8825,
                                        "name": "router",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8802,
                                        "src": "2018:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 8824,
                                      "name": "IMarXDEXV2Router01",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6592,
                                      "src": "1999:18:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Router01_$6592_$",
                                        "typeString": "type(contract IMarXDEXV2Router01)"
                                      }
                                    },
                                    "id": 8826,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1999:26:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                                      "typeString": "contract IMarXDEXV2Router01"
                                    }
                                  },
                                  "id": 8827,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "swapTokensForExactETH",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6504,
                                  "src": "1999:48:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                                  }
                                },
                                "id": 8828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1999:57:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8829,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8804,
                                "src": "2058:9:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8830,
                                "name": "amountInMax",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8806,
                                "src": "2069:11:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8831,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8809,
                                "src": "2082:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8832,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8811,
                                "src": "2088:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8833,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8813,
                                "src": "2092:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8822,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "1963:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8823,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1963:22:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 8834,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1963:147:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8820,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8802,
                            "src": "1943:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 8821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "delegatecall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1943:19:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) returns (bool,bytes memory)"
                          }
                        },
                        "id": 8835,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1943:168:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1901:210:23"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8838,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8817,
                            "src": "2128:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 8837,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "2121:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 8839,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2121:15:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8840,
                      "nodeType": "ExpressionStatement",
                      "src": "2121:15:23"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8844,
                                "name": "returnData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8819,
                                "src": "2170:10:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 8846,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2183:4:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 8845,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2183:4:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 8847,
                                    "indexExpression": null,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2183:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "type(uint256[] memory)"
                                    }
                                  }
                                ],
                                "id": 8848,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2182:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8842,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2159:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8843,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2159:10:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 8849,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2159:32:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 8841,
                          "name": "Amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8640,
                          "src": "2151:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                            "typeString": "function (uint256[] memory)"
                          }
                        },
                        "id": 8850,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2151:41:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8851,
                      "nodeType": "EmitStatement",
                      "src": "2146:46:23"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "fa3219d5",
                "id": 8853,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapTokensForExactETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8814,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8802,
                      "mutability": "mutable",
                      "name": "router",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8853,
                      "src": "1735:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8801,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1735:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8804,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8853,
                      "src": "1759:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8803,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1759:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8806,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8853,
                      "src": "1783:16:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8805,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1783:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8809,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8853,
                      "src": "1809:23:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 8807,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1809:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8808,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "1809:9:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8811,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8853,
                      "src": "1842:10:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8810,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1842:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8813,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8853,
                      "src": "1862:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8812,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1862:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1725:156:23"
                },
                "returnParameters": {
                  "id": 8815,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1891:0:23"
                },
                "scope": 8957,
                "src": "1695:504:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 8905,
                  "nodeType": "Block",
                  "src": "2401:308:23",
                  "statements": [
                    {
                      "assignments": [
                        8870,
                        8872
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8870,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8905,
                          "src": "2412:12:23",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 8869,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "2412:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 8872,
                          "mutability": "mutable",
                          "name": "returnData",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8905,
                          "src": "2426:23:23",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 8871,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "2426:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8889,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 8878,
                                        "name": "router",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8855,
                                        "src": "2528:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 8877,
                                      "name": "IMarXDEXV2Router01",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6592,
                                      "src": "2509:18:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Router01_$6592_$",
                                        "typeString": "type(contract IMarXDEXV2Router01)"
                                      }
                                    },
                                    "id": 8879,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2509:26:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                                      "typeString": "contract IMarXDEXV2Router01"
                                    }
                                  },
                                  "id": 8880,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "swapExactTokensForETH",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6521,
                                  "src": "2509:48:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                                  }
                                },
                                "id": 8881,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2509:57:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8882,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8857,
                                "src": "2568:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8883,
                                "name": "amountOutMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8859,
                                "src": "2578:12:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8884,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8862,
                                "src": "2592:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8885,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8864,
                                "src": "2598:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8886,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8866,
                                "src": "2602:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8875,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2473:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8876,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2473:22:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 8887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2473:147:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8873,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8855,
                            "src": "2453:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 8874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "delegatecall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2453:19:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) returns (bool,bytes memory)"
                          }
                        },
                        "id": 8888,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2453:168:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2411:210:23"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8891,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8870,
                            "src": "2638:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 8890,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "2631:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 8892,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2631:15:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8893,
                      "nodeType": "ExpressionStatement",
                      "src": "2631:15:23"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8897,
                                "name": "returnData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8872,
                                "src": "2680:10:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 8899,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2693:4:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 8898,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2693:4:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 8900,
                                    "indexExpression": null,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2693:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "type(uint256[] memory)"
                                    }
                                  }
                                ],
                                "id": 8901,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2692:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8895,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2669:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8896,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2669:10:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 8902,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2669:32:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 8894,
                          "name": "Amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8640,
                          "src": "2661:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                            "typeString": "function (uint256[] memory)"
                          }
                        },
                        "id": 8903,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2661:41:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8904,
                      "nodeType": "EmitStatement",
                      "src": "2656:46:23"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "9c91fcb5",
                "id": 8906,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactTokensForETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8867,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8855,
                      "mutability": "mutable",
                      "name": "router",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8906,
                      "src": "2245:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8854,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2245:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8857,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8906,
                      "src": "2269:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8856,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2269:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8859,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8906,
                      "src": "2292:17:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8858,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2292:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8862,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8906,
                      "src": "2319:23:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 8860,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2319:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8861,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2319:9:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8864,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8906,
                      "src": "2352:10:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8863,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2352:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8866,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8906,
                      "src": "2372:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8865,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2372:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2235:156:23"
                },
                "returnParameters": {
                  "id": 8868,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2401:0:23"
                },
                "scope": 8957,
                "src": "2205:504:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 8955,
                  "nodeType": "Block",
                  "src": "2893:295:23",
                  "statements": [
                    {
                      "assignments": [
                        8921,
                        8923
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8921,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8955,
                          "src": "2904:12:23",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 8920,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "2904:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 8923,
                          "mutability": "mutable",
                          "name": "returnData",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8955,
                          "src": "2918:23:23",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 8922,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "2918:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8939,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 8929,
                                        "name": "router",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8908,
                                        "src": "3020:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 8928,
                                      "name": "IMarXDEXV2Router01",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6592,
                                      "src": "3001:18:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMarXDEXV2Router01_$6592_$",
                                        "typeString": "type(contract IMarXDEXV2Router01)"
                                      }
                                    },
                                    "id": 8930,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3001:26:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMarXDEXV2Router01_$6592",
                                      "typeString": "contract IMarXDEXV2Router01"
                                    }
                                  },
                                  "id": 8931,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "swapETHForExactTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6536,
                                  "src": "3001:48:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256,address[] memory,address,uint256) payable external returns (uint256[] memory)"
                                  }
                                },
                                "id": 8932,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3001:57:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8933,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8910,
                                "src": "3060:9:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8934,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8913,
                                "src": "3071:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8935,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8915,
                                "src": "3077:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8936,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8917,
                                "src": "3081:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8926,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2965:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8927,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2965:22:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 8937,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2965:134:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8924,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8908,
                            "src": "2945:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 8925,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "delegatecall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2945:19:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) returns (bool,bytes memory)"
                          }
                        },
                        "id": 8938,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2945:155:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2903:197:23"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8941,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8921,
                            "src": "3117:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 8940,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "3110:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 8942,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3110:15:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8943,
                      "nodeType": "ExpressionStatement",
                      "src": "3110:15:23"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8947,
                                "name": "returnData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8923,
                                "src": "3159:10:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 8949,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3172:4:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 8948,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3172:4:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 8950,
                                    "indexExpression": null,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3172:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "type(uint256[] memory)"
                                    }
                                  }
                                ],
                                "id": 8951,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3171:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8945,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "3148:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3148:10:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 8952,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3148:32:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 8944,
                          "name": "Amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8640,
                          "src": "3140:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                            "typeString": "function (uint256[] memory)"
                          }
                        },
                        "id": 8953,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3140:41:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8954,
                      "nodeType": "EmitStatement",
                      "src": "3135:46:23"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "b05f579e",
                "id": 8956,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapETHForExactTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8918,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8908,
                      "mutability": "mutable",
                      "name": "router",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8956,
                      "src": "2755:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8907,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2755:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8910,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8956,
                      "src": "2779:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8909,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2779:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8913,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8956,
                      "src": "2803:23:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 8911,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2803:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8912,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2803:9:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8915,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8956,
                      "src": "2836:10:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8914,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2836:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8917,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8956,
                      "src": "2856:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8916,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2856:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2745:130:23"
                },
                "returnParameters": {
                  "id": 8919,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2893:0:23"
                },
                "scope": 8957,
                "src": "2715:473:23",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 8958,
            "src": "73:3117:23"
          }
        ],
        "src": "0:3191:23"
      }
    },
    "contracts/test/WEVMOS.sol": {
      "id": 24,
      "AST": {
        "absolutePath": "contracts/test/WEVMOS.sol",
        "exportedSymbols": {
          "WEVMOS": [
            9201
          ]
        },
        "id": 9202,
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 8959,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".6"
            ],
            "nodeType": "PragmaDirective",
            "src": "46:23:24"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 9201,
            "linearizedBaseContracts": [
              9201
            ],
            "name": "WEVMOS",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": false,
                "functionSelector": "06fdde03",
                "id": 8962,
                "mutability": "mutable",
                "name": "name",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9201,
                "src": "93:40:24",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 8960,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "93:6:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "577261707065642045766d6f73",
                  "id": 8961,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "118:15:24",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_384cc99fe099843aa68df05414842b694412ccf5bb4378b534a1a96c799947ee",
                    "typeString": "literal_string \"Wrapped Evmos\""
                  },
                  "value": "Wrapped Evmos"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "95d89b41",
                "id": 8965,
                "mutability": "mutable",
                "name": "symbol",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9201,
                "src": "139:33:24",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 8963,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "139:6:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "5745564d4f53",
                  "id": 8964,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "164:8:24",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_3fe8a00ad7dc9305f70c7c25c3d300881fba7eb17545b6b5240bfa189eff9460",
                    "typeString": "literal_string \"WEVMOS\""
                  },
                  "value": "WEVMOS"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "313ce567",
                "id": 8968,
                "mutability": "mutable",
                "name": "decimals",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9201,
                "src": "178:27:24",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 8966,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "178:5:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3138",
                  "id": 8967,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "203:2:24",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_18_by_1",
                    "typeString": "int_const 18"
                  },
                  "value": "18"
                },
                "visibility": "public"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8976,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8975,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8970,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "src",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8976,
                      "src": "228:19:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8969,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "228:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8972,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "guy",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8976,
                      "src": "249:19:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8971,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "249:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8974,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8976,
                      "src": "270:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8973,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "270:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "227:52:24"
                },
                "src": "212:68:24"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8984,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8983,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8978,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "src",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8984,
                      "src": "301:19:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8977,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "301:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8980,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8984,
                      "src": "322:19:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8979,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "322:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8982,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8984,
                      "src": "343:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8981,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "343:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "300:52:24"
                },
                "src": "285:68:24"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8990,
                "name": "Deposit",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8989,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8986,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8990,
                      "src": "373:19:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8985,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "373:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8988,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8990,
                      "src": "394:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8987,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "394:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "372:31:24"
                },
                "src": "358:46:24"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8996,
                "name": "Withdrawal",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8995,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8992,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "src",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8996,
                      "src": "427:19:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8991,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "427:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8994,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8996,
                      "src": "448:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8993,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "448:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "426:31:24"
                },
                "src": "409:49:24"
              },
              {
                "constant": false,
                "functionSelector": "70a08231",
                "id": 9000,
                "mutability": "mutable",
                "name": "balanceOf",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9201,
                "src": "464:65:24",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 8999,
                  "keyType": {
                    "id": 8997,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "473:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "464:25:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 8998,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "484:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "dd62ed3e",
                "id": 9006,
                "mutability": "mutable",
                "name": "allowance",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9201,
                "src": "535:65:24",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                  "typeString": "mapping(address => mapping(address => uint256))"
                },
                "typeName": {
                  "id": 9005,
                  "keyType": {
                    "id": 9001,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "544:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "535:46:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "valueType": {
                    "id": 9004,
                    "keyType": {
                      "id": 9002,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "564:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "555:25:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 9003,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "575:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9024,
                  "nodeType": "Block",
                  "src": "707:96:24",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9015,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9009,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9000,
                            "src": "717:9:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9012,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9010,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "727:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "727:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "717:21:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 9013,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "742:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 9014,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "742:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "717:34:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9016,
                      "nodeType": "ExpressionStatement",
                      "src": "717:34:24"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9018,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "774:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9019,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "774:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9020,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "786:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9021,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "786:9:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9017,
                          "name": "Deposit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8990,
                          "src": "766:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 9022,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "766:30:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9023,
                      "nodeType": "EmitStatement",
                      "src": "761:35:24"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d0e30db0",
                "id": 9025,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "deposit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9007,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "689:2:24"
                },
                "returnParameters": {
                  "id": 9008,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "707:0:24"
                },
                "scope": 9201,
                "src": "673:130:24",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9061,
                  "nodeType": "Block",
                  "src": "843:172:24",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9036,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 9031,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9000,
                                "src": "861:9:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 9034,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9032,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "871:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 9033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "871:10:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "861:21:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 9035,
                              "name": "wad",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9027,
                              "src": "886:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "861:28:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "",
                            "id": 9037,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "891:2:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            }
                          ],
                          "id": 9030,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "853:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 9038,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "853:41:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9039,
                      "nodeType": "ExpressionStatement",
                      "src": "853:41:24"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9040,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9000,
                            "src": "904:9:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9043,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9041,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "914:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "914:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "904:21:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 9044,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9027,
                          "src": "929:3:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "904:28:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9046,
                      "nodeType": "ExpressionStatement",
                      "src": "904:28:24"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9052,
                            "name": "wad",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9027,
                            "src": "962:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9047,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "942:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9050,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "942:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "id": 9051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "942:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 9053,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "942:24:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9054,
                      "nodeType": "ExpressionStatement",
                      "src": "942:24:24"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9056,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "992:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9057,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "992:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9058,
                            "name": "wad",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9027,
                            "src": "1004:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9055,
                          "name": "Withdrawal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8996,
                          "src": "981:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 9059,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "981:27:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9060,
                      "nodeType": "EmitStatement",
                      "src": "976:32:24"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "2e1a7d4d",
                "id": 9062,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "withdraw",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9028,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9027,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9062,
                      "src": "826:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9026,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "826:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "825:10:24"
                },
                "returnParameters": {
                  "id": 9029,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "843:0:24"
                },
                "scope": 9201,
                "src": "808:207:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9073,
                  "nodeType": "Block",
                  "src": "1071:45:24",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9069,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "1096:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_WEVMOS_$9201",
                                "typeString": "contract WEVMOS"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_WEVMOS_$9201",
                                "typeString": "contract WEVMOS"
                              }
                            ],
                            "id": 9068,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1088:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 9067,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1088:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 9070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1088:13:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9071,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "balance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1088:21:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 9066,
                      "id": 9072,
                      "nodeType": "Return",
                      "src": "1081:28:24"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "18160ddd",
                "id": 9074,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9063,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1041:2:24"
                },
                "returnParameters": {
                  "id": 9066,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9065,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9074,
                      "src": "1065:4:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9064,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1065:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1064:6:24"
                },
                "scope": 9201,
                "src": "1021:95:24",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9101,
                  "nodeType": "Block",
                  "src": "1184:115:24",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9090,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 9083,
                              "name": "allowance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9006,
                              "src": "1194:9:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 9087,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9084,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1204:3:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9085,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1204:10:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1194:21:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9088,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9086,
                            "name": "guy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9076,
                            "src": "1216:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1194:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 9089,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9078,
                          "src": "1223:3:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1194:32:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9091,
                      "nodeType": "ExpressionStatement",
                      "src": "1194:32:24"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9093,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1250:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9094,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1250:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9095,
                            "name": "guy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9076,
                            "src": "1262:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9096,
                            "name": "wad",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9078,
                            "src": "1267:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9092,
                          "name": "Approval",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8976,
                          "src": "1241:8:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 9097,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1241:30:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9098,
                      "nodeType": "EmitStatement",
                      "src": "1236:35:24"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 9099,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1288:4:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 9082,
                      "id": 9100,
                      "nodeType": "Return",
                      "src": "1281:11:24"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 9102,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9079,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9076,
                      "mutability": "mutable",
                      "name": "guy",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9102,
                      "src": "1139:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9075,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1139:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9078,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9102,
                      "src": "1152:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9077,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1152:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1138:23:24"
                },
                "returnParameters": {
                  "id": 9082,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9081,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9102,
                      "src": "1178:4:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9080,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1178:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1177:6:24"
                },
                "scope": 9201,
                "src": "1122:177:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9118,
                  "nodeType": "Block",
                  "src": "1368:58:24",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9112,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1398:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9113,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1398:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9114,
                            "name": "dst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9104,
                            "src": "1410:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9115,
                            "name": "wad",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9106,
                            "src": "1415:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9111,
                          "name": "transferFrom",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9200,
                          "src": "1385:12:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) returns (bool)"
                          }
                        },
                        "id": 9116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1385:34:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 9110,
                      "id": 9117,
                      "nodeType": "Return",
                      "src": "1378:41:24"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 9119,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9107,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9104,
                      "mutability": "mutable",
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9119,
                      "src": "1323:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9103,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1323:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9106,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9119,
                      "src": "1336:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9105,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1336:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1322:23:24"
                },
                "returnParameters": {
                  "id": 9110,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9109,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9119,
                      "src": "1362:4:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9108,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1362:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1361:6:24"
                },
                "scope": 9201,
                "src": "1305:121:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9199,
                  "nodeType": "Block",
                  "src": "1532:368:24",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9135,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 9131,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9000,
                                "src": "1550:9:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 9133,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 9132,
                                "name": "src",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9121,
                                "src": "1560:3:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1550:14:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 9134,
                              "name": "wad",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9125,
                              "src": "1568:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1550:21:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "",
                            "id": 9136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1573:2:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            }
                          ],
                          "id": 9130,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1542:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 9137,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1542:34:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9138,
                      "nodeType": "ExpressionStatement",
                      "src": "1542:34:24"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 9155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9139,
                            "name": "src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9121,
                            "src": "1591:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9140,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1598:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9141,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1598:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1591:17:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 9143,
                                "name": "allowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9006,
                                "src": "1612:9:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 9145,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 9144,
                                "name": "src",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9121,
                                "src": "1622:3:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1612:14:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 9148,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9146,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1627:3:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1627:10:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1612:26:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9152,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "1647:2:24",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 9151,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1648:1:24",
                                  "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": 9150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1642:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9149,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "1642:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 9153,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1642:8:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1612:38:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1591:59:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 9178,
                      "nodeType": "IfStatement",
                      "src": "1587:183:24",
                      "trueBody": {
                        "id": 9177,
                        "nodeType": "Block",
                        "src": "1652:118:24",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9164,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 9157,
                                        "name": "allowance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9006,
                                        "src": "1674:9:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                          "typeString": "mapping(address => mapping(address => uint256))"
                                        }
                                      },
                                      "id": 9159,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 9158,
                                        "name": "src",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9121,
                                        "src": "1684:3:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1674:14:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                      }
                                    },
                                    "id": 9162,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 9160,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "1689:3:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 9161,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1689:10:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1674:26:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 9163,
                                    "name": "wad",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9125,
                                    "src": "1704:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1674:33:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "",
                                  "id": 9165,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1709:2:24",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  },
                                  "value": ""
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  }
                                ],
                                "id": 9156,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "1666:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 9166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1666:46:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 9167,
                            "nodeType": "ExpressionStatement",
                            "src": "1666:46:24"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 9175,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 9168,
                                    "name": "allowance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9006,
                                    "src": "1726:9:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 9172,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 9169,
                                    "name": "src",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9121,
                                    "src": "1736:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1726:14:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 9173,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9170,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "1741:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 9171,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1741:10:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "1726:26:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 9174,
                                "name": "wad",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9125,
                                "src": "1756:3:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1726:33:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9176,
                            "nodeType": "ExpressionStatement",
                            "src": "1726:33:24"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9183,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9179,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9000,
                            "src": "1780:9:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9181,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9180,
                            "name": "src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9121,
                            "src": "1790:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1780:14:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 9182,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9125,
                          "src": "1798:3:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1780:21:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9184,
                      "nodeType": "ExpressionStatement",
                      "src": "1780:21:24"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9189,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9185,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9000,
                            "src": "1811:9:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9187,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9186,
                            "name": "dst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9123,
                            "src": "1821:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1811:14:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 9188,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9125,
                          "src": "1829:3:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1811:21:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9190,
                      "nodeType": "ExpressionStatement",
                      "src": "1811:21:24"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9192,
                            "name": "src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9121,
                            "src": "1857:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9193,
                            "name": "dst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9123,
                            "src": "1862:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9194,
                            "name": "wad",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9125,
                            "src": "1867:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9191,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8984,
                          "src": "1848:8:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 9195,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1848:23:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9196,
                      "nodeType": "EmitStatement",
                      "src": "1843:28:24"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 9197,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1889:4:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 9129,
                      "id": 9198,
                      "nodeType": "Return",
                      "src": "1882:11:24"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 9200,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9126,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9121,
                      "mutability": "mutable",
                      "name": "src",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9200,
                      "src": "1454:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9120,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1454:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9123,
                      "mutability": "mutable",
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9200,
                      "src": "1467:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9122,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1467:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9125,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9200,
                      "src": "1480:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9124,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1480:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1453:36:24"
                },
                "returnParameters": {
                  "id": 9129,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9128,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9200,
                      "src": "1522:4:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9127,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1522:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1521:6:24"
                },
                "scope": 9201,
                "src": "1432:468:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 9202,
            "src": "71:1831:24"
          }
        ],
        "src": "46:1857:24"
      }
    }
  },
  "sourceList": [
    "@marx-dex/marx-dex-lib/contracts/libraries/Babylonian.sol",
    "@marx-dex/marx-dex-lib/contracts/libraries/BitMath.sol",
    "@marx-dex/marx-dex-lib/contracts/libraries/FixedPoint.sol",
    "@marx-dex/marx-dex-lib/contracts/libraries/FullMath.sol",
    "@marx-dex/marx-dex-lib/contracts/libraries/TransferHelper.sol",
    "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Factory.sol",
    "@marx-dex/marx-dex-v2-core/contracts/interfaces/IMarXDEXV2Pair.sol",
    "contracts/MarXDEXV2Router01.sol",
    "contracts/MarXDEXV2Router02.sol",
    "contracts/examples/ExampleComputeLiquidityValue.sol",
    "contracts/examples/ExampleOracleSimple.sol",
    "contracts/examples/ExampleSlidingWindowOracle.sol",
    "contracts/examples/ExampleSwapToPrice.sol",
    "contracts/interfaces/IERC20.sol",
    "contracts/interfaces/IMarXDEXV2Router01.sol",
    "contracts/interfaces/IMarXDEXV2Router02.sol",
    "contracts/interfaces/IWETH.sol",
    "contracts/libraries/MarXDEXV2Library.sol",
    "contracts/libraries/MarXDEXV2LiquidityMathLibrary.sol",
    "contracts/libraries/MarXDEXV2OracleLibrary.sol",
    "contracts/libraries/SafeMath.sol",
    "contracts/test/DeflatingERC20.sol",
    "contracts/test/ERC20.sol",
    "contracts/test/RouterEventEmitter.sol",
    "contracts/test/WEVMOS.sol"
  ]
}